NuGet上下文MCP服务器
 ](https://smithery.ai/server/@plucked/nuget-context-server) 
一个C#应用程序,作为 模型上下文协议(MCP) 服务器,提供有关的上下文。NET项目对大型语言模型(LLM)或其他开发工具的依赖关系(NuGet包)。
概述
此服务器进行分析。NET解决方案(.sln)和项目(.csproj)提取NuGet包信息。它与NuGet提要交互以获取包详细信息、版本和元数据,使用SQLite在本地缓存结果以提高性能。这些功能通过模型上下文协议(MCP)作为工具公开,允许AI代理或其他工具以编程方式查询NuGet信息。
特性
服务器通过MCP公开以下工具:
AnalyzeProjectDependencies:分析a.sln或.csproj文件以查找NuGet依赖项及其最新可用版本。SearchNuGetPackages:在配置的NuGet提要中搜索与搜索词匹配的包,包括分页选项和预发布版本。GetNuGetPackageVersions:列出特定包ID的所有可用版本(稳定版或预发布版)。GetLatestNuGetPackageVersion:获取特定包ID的最新稳定或预发布版本字符串。GetNuGetPackageDetails:检索特定包ID和可选版本的详细元数据(描述、作者、URL等)。
先决条件
- .NET 9 SDK (或更高版本的兼容版本)
安装和建造
- 克隆存储库:
git clone https://github.com/plucked/nuget-context-server
cd nuget-context-server- 构建服务器:
dotnet build --configuration Release主可执行文件将位于 src/NuGetContextMcpServer.Host/bin/Release/net9.0/ 目录(根据实际构建输出调整路径)。
测试
此项目使用 单元测试 用于单元和集成测试 莫克 用于模拟单元测试中的依赖关系。
要运行所有测试,请导航到存储库根目录并执行:
dotnet test注: 运行集成测试(NuGetContextMcpServer.Integration.Tests)要求 码头工人 因为它们可能使用测试容器。您可以从以下网址下载Docker Desktop 这里.
测试项目位于 tests/ 目录:
NuGetContextMcpServer.Application.Tests:应用层服务的单元测试。NuGetContextMcpServer.Infrastructure.Tests:基础设施层组件的单元测试(例如缓存、解析)。NuGetContextMcpServer.Integration.Tests:可能与实际文件系统或潜在外部资源交互的集成测试(尽管通常被模拟或使用本地测试资产)。
使用和配置
此服务器设计为由MCP客户端应用程序(如IDE扩展)运行。客户端负责启动服务器进程并与之通信,通常通过标准输入/输出(stdio)。
配置:
服务器使用 appsettings.json (以及特定于环境的覆盖,如 appsettings.Development.json)位于 src/NuGetContextMcpServer.Host 配置目录:
NuGetSettings:
- QueryFeedUrl:NuGet v3提要索引的URL(默认为 https://api.nuget.org/v3/index.json). - Username (可选):经过身份验证的提要的用户名。 - PasswordOrPat (可选):用于经过身份验证的提要的密码或个人访问令牌(PAT)。
CacheSettings:
- DatabasePath:SQLite缓存文件的路径(默认为 nuget_cache.db 在工作目录中)。 - DefaultExpirationMinutes:默认缓存持续时间(分钟)(默认值为60)。
- 登录中: 通过中的Serilog设置进行配置
appsettings.json默认情况下,日志会写入文件。
MCP客户端配置示例(使用stdio):
MCP客户端通常需要类似于此的配置(语法可能因客户端而异):
{
"mcpServers": {
"nuget-context": {
"command": "dotnet",
"args": [
"watch",
"run",
"--non-interactive",
"--project",
"src/NuGetContextMcpServer.Host/NuGetContextMcpServer.Host.csproj",
"--",
"--transport", "stdio"
],
"cwd": ".",
"disabled": false
}
}
}command:要运行的可执行文件(dotnet).args:传递给命令的参数。用途dotnet watch run以便开发人员在文件更改时自动重启服务器。这--transport stdio参数告诉服务器使用标准I/O进行MCP通信。对于生产或非手表场景,请更换"watch"随着"run"并删除"--non-interactive".cwd:运行命令的工作目录(通常是存储库根目录)。
建筑
服务器使用基于构建的分层架构。NET通用主机:
- 主持人: 管理应用程序生命周期、依赖注入(DI)、配置、日志记录和MCP通信设置。
- 应用: 定义服务接口,并包含核心应用程序逻辑和MCP工具定义。
- 基础设施: 提供以下内容的具体实现:
- NuGet提要交互(NuGet.Protocol). - 项目/解决方案解析(Microsoft.Build). - 缓存(Microsoft.Data.Sqlite).
贡献
欢迎投稿!请参阅 贡献指南 了解更多详情。
许可证
该项目根据 MIT许可证。请参阅 许可证 文件以获取详细信息。
