这是一个用 C# 编写的应用程序,作为 模型上下文协议 (MCP) 服务器运行,向大型语言模型(LLMs)或其他开发工具提供关于 .NET 项目依赖项(NuGet 包)的信息。
该服务器分析 .NET 解决方案(.sln)和项目(.csproj),以提取 NuGet 包信息。它与 NuGet 馈送交互以获取包详细信息、版本和元数据,并使用 SQLite 在本地缓存结果以提高性能。这些功能通过模型上下文协议 (MCP) 公开为工具,允许 AI 代理或其他工具查询 NuGet 信息。
该服务器通过 MCP 公开以下工具:
AnalyzeProjectDependencies:分析 .sln 或 .csproj 文件以查找 NuGet 依赖项及其最新可用版本。SearchNuGetPackages:在配置的 NuGet 馈送中搜索与搜索词匹配的包,支持分页和包含预发布版本。GetNuGetPackageVersions:列出特定包 ID 的所有可用版本(稳定或预发布)。GetLatestNuGetPackageVersion:获取特定包 ID 的最新稳定或预发布版本字符串。GetNuGetPackageDetails:检索特定包 ID 和可选版本的详细元数据(描述、作者、URL 等)。git clone https://github.com/plucked/nuget-context-server
cd nuget-context-server
dotnet build --configuration Release
主执行文件将在 src/NuGetContextMcpServer.Host/bin/Release/net9.0/ 目录中(根据实际构建输出调整路径)。该项目使用 NUnit 进行单元和集成测试,并使用 Moq 在单元测试中模拟依赖关系。
要运行所有测试,请导航到仓库根目录并执行:
dotnet test
注意: 运行集成测试(NuGetContextMcpServer.Integration.Tests)需要安装并运行 Docker,因为它们可能会利用测试容器。您可以从 这里 下载 Docker Desktop。
测试项目位于 tests/ 目录中:
NuGetContextMcpServer.Application.Tests:应用层服务的单元测试。NuGetContextMcpServer.Infrastructure.Tests:基础设施层组件(如缓存、解析)的单元测试。NuGetContextMcpServer.Integration.Tests:可能与实际文件系统或潜在外部资源交互的集成测试(通常被模拟或使用本地测试资产)。此服务器设计为由 MCP 客户端应用程序(如 IDE 扩展)运行。客户端负责启动服务器进程并与之通信,通常通过标准输入/输出(stdio)进行。
配置:
服务器使用位于 src/NuGetContextMcpServer.Host 目录中的 appsettings.json(以及环境特定的覆盖文件,如 appsettings.Development.json)进行配置:
NuGetSettings:
QueryFeedUrl:NuGet v3 馈送索引的 URL(默认为 https://api.nuget.org/v3/index.json)。Username(可选):认证馈送的用户名。PasswordOrPat(可选):认证馈送的密码或个人访问令牌(PAT)。CacheSettings:
DatabasePath:SQLite 缓存文件的路径(默认为工作目录中的 nuget_cache.db)。DefaultExpirationMinutes:默认缓存持续时间(分钟,默认为 60)。appsettings.json 中的 Serilog 设置配置。日志默认写入文件。示例 MCP 客户端配置(使用 stdio):
一个 MCP 客户端通常需要类似以下配置(语法可能因客户端而异):
{
"mcpServers": {
"nuget-context": {
"command": "dotnet",
"args": [
"watch",
"run",
"--non-interactive",
"--project",
"src/NuGetContextMcpServer.Host/NuGetContextMc