关于 NuGet Context MCP Server
NuGet Context MCP Server 分析 .NET 解决方案和项目,并查询 NuGet 源中的包版本与元数据,面向需要依赖上下文的 AI Agent 和开发工具;结果使用本地 SQLite 缓存。
主要功能
- 01分析 .sln 和 .csproj 依赖
- 02搜索已配置的 NuGet 源
- 03列出包的可用版本
- 04获取包元数据
- 05使用 SQLite 缓存结果
适用场景
- 01查找项目依赖的较新版本
- 02按关键词搜索 NuGet 包
- 03检查包版本和元数据
- 04通过缓存减少重复查询源
MCP 相关
该服务将依赖分析和 NuGet 包查询作为 MCP 工具提供。MCP 客户端通常启动服务进程,并通过 stdio 通信。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
NuGet Context MCP Server
一个 C# 应用,可作为 Model Context Protocol (MCP) 服务,向大模型(LLM)或其他开发工具提供有关 .NET 项目依赖项(NuGet 包)的上下文。
概述
此服务会分析 .NET 解决方案(.sln)和项目(.csproj),提取 NuGet 包信息。它会与 NuGet 源交互,以获取包的详细信息、版本和元数据,并使用 SQLite 在本地缓存结果,以提升性能。此服务通过 Model Context Protocol (MCP) 将这些功能作为工具提供,使 AI Agent 或其他工具能够以编程方式查询 NuGet 信息。
功能
此服务通过 MCP 提供以下工具:
AnalyzeProjectDependencies:分析.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 Releasesrc/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/NuGetContextMcpServer.Host.csproj",
"--",
"--transport", "stdio"
],
"cwd": ".",
"disabled": false
}
}
}
command:要运行的可执行文件(dotnet)。args:传递给命令的参数。开发时使用dotnet watch run,以便在文件更改时自动重启服务。--transport stdio参数告知服务使用标准 I/O 进行 MCP 通信。在生产环境或不使用 watch 的情况下,将"watch"替换为"run",并移除"--non-interactive"。cwd:运行命令时使用的工作目录(通常为代码库根目录)。
架构
此服务采用基于 .NET Generic Host 构建的分层架构:
- **Host:**管理应用程序生命周期、依赖注入(DI)、配置、日志记录以及 MCP 通信设置。
- **Application:**定义服务接口,并包含核心应用程序逻辑和 MCP 工具定义。
- **Infrastructure:**提供以下功能的具体实现:
- NuGet 源交互(
NuGet.Protocol)。 - 项目/解决方案解析(
Microsoft.Build)。 - 缓存(
Microsoft.Data.Sqlite)。
- NuGet 源交互(
贡献
欢迎贡献!有关详情,请参阅贡献指南。
许可证
此项目采用 MIT License 授权。详情请参阅 LICENSE 文件。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。