一个强大的MCP服务器,可以从NuGet包中获取精确的接口、类、枚举、记录和结构定义。它通过提供关于真实包API的精确信息来减少LLM幻觉。 认证来源:MCPHub
此应用程序不仅仅是一个演示。它是一个实用的MCP服务器,提供了关于特定NuGet包版本的方法和类型的准确、最新的信息。语言模型可以向NuGet直接请求真实的包元数据和类型定义,而不是使用旧的训练数据。
该服务器使用模型上下文协议(MCP)。这使得与AI助手和开发工具连接变得容易。它提供了对包信息的实时访问,帮助开发者和AI系统更好地决定如何使用API。
你可以使用此服务器与OllamaChat,VS Code中的Copilot,以及其他兼容MCP的客户端。
MCP: 列出服务器 → NugetMcpServer → 启动Newtonsoft.Json包的信息”dotnet tool install -g DimonSmart.NugetMcpServer
在你的工作区创建.vscode/mcp.json:
{
"servers": {
"NugetMcpServer": {
"type": "stdio",
"command": "dnx",
"args": ["DimonSmart.NugetMcpServer"]
}
}
}
winget install DimonSmart.NugetMcpServer
get_current_time() - 返回服务器当前时间,格式为ISO 8601(YYYY-MM-DDThh:mm:ssZ)get_interface_definition(packageId, interfaceName?, version?) - 从NuGet包中获取C#接口定义。参数:packageId(NuGet包ID),interfaceName(可选,不带命名空间的短名称),version(可选,默认为最新)list_interfaces(packageId, version?) - 列出NuGet包中的所有公共接口。返回包ID、版本和接口列表get_enum_definition(packageId, enumName, version?) - 从NuGet包中获取C#枚举定义。参数:packageId(NuGet包ID),enumName(不带命名空间的短名称),version(可选,默认为最新)get_class_or_record_or_struct_definition(packageId, typeName, version?) - 从NuGet包中获取C#类、记录或结构定义。参数:packageId(NuGet包ID),typeName(短名称或全名),version(可选,默认为最新)list_classes_records_structs(packageId, version?) - 列出NuGet包中的所有公共类、记录和结构。返回包ID、版本和类型列表list_package_files(packageId, version?) - 列出NuGet包中的所有文件。get_package_file(packageId, filePath, version?, offset?, bytes?) - 读取NuGet包中的文件。返回文本或二进制文件的base64编码。最大块大小为1MB。search_packages(query, maxResults?, fuzzySearch?) - 根据描述或功能搜索NuGet包。
get_package_info(packageId, version?) - 获取NuGet包的综合信息,包括元数据、依赖项和元包状态。对于元包,显示清晰警告并指导实际实现的位置。get_package_info工具响应中,提供单次调用的完整包信息。这里是一些使用DimonSmart.MazeGenerator作为示例包的MCP工具服务器响应示例:
用户可能会问:
“我想在我的.NET应用中生成迷宫。有相关的包吗?你能给我展示一下DimonSmart.MazeGenerator的接口,让我看看怎么使用吗?”
代理会使用MCP服务器获取接口定义:
请求:
{
"name": "f1e_GetInterfaceDefinition",
"parameters": {
"packageId": "DimonSmart.MazeGenerator",
"interfaceName": "IMazeGenerator",
"version": ""
}
}
响应(实际MCP服务器输出):
{
"result": "namespace DimonSmart.MazeGenerator\n{\n /// <summary>\n /// 迷宫生成算法的接口\n /// </summary>\n public interface IMazeGenerator\n {\n /// <summary>\n /// 创建具有指定尺寸的新迷宫\n /// </summary>\n /// <param name=\"width\">迷宫的宽度</param>\n /// <param name=\"height\">迷宫的高度</param>\n /// <returns>表示迷宫的二维数组</returns>\n bool[,] Generate(int width, int height);\n \n /// <summary>\n /// 获取用于迷宫生成的算法名称\n /// </summary>\n string AlgorithmName { get; }\n }\n}"
}
结果是MCP服务器的实际JSON响应:
\n\"result属性中的JSON字符串内这就是代理如何从MCP服务器接收接口定义。代理然后解析并以可读格式显示给用户。
用户可能会问:
“我需要一个库来处理我的.NET应用中的JSON。你能帮我找到处理JSON的最流行的包吗?”
代理会使用MCP服务器搜索包:
请求:
{
"name": "SearchPackages",
"parameters": {
"query": "JSON序列化库",
"maxResults": 5,
"fuzzySearch": false
}
}
为了获得描述性查询的更好结果,启用模糊搜索:
请求:
{
"name": "SearchPackages",
"parameters": {
"query": "我需要一个生成迷宫的库",
"maxResults": 10,
"fuzzySearch": true
}
}
AI也可以处理俄语查询:
请求:
{
"name": "SearchPackages",
"parameters": {
"query": "用户需要生成迷宫",
"maxResults": 10,
"fuzzySearch": true
}
}
响应(格式化结果显示合并的结果):
/* NUGET 包搜索结果:用户需要生成迷宫 */
/* AI生成的包名:MazeGenerator MazeBuilder MazeCreator */
/* 发现了8个包(显示前8个)*/
## DimonSmart.MazeGenerator v1.0.0
**下载量**:12,543
**描述**:具有多种算法的高级迷宫生成库
**项目网址**:https://github.com/DimonSmart/MazeGenerator
## MazeBuilder v2.1.0
**下载量**:8,234
**描述**:简单的迷宫构建工具包
搜索算法如下:
你可以使用这个MCP服务器与不同的开发工具和AI助手:
通过使用此服务器,开发者和AI系统可以获得关于NuGet包接口、枚举、结构和记录的实时、准确信息。这减少了过时或错误API建议的可能性。
这个MCP服务器有助于解决AI辅助开发中的一个重要问题:LLM关于包API的幻觉。常见问题是:
模型上下文协议(MCP)是一种标准化语言模型与外部工具之间通信的协议。它允许模型通过一个接口调用函数、获取信息并与外部系统交互。
无许可证 - 这是自由且无负担的软件,发布到公共领域。
© 2025 DimonSmart
所有分析包内容的工具(类定义、接口定义、枚举定义和列出工具)现在自动检测元包并显示清晰警告。元包是NuGet包,它们将其他包组合在一起而不包含实际实现代码。当检测到元包时,工具会:
元包检测由MetaPackageDetector服务驱动,该服务分析包结构和依赖关系模式,以确定何时一个包仅作为一个组合机制。
Program.cs - 主入口点,配置并运行具有版本支持的MCP服务器TimeTool.cs - 时间相关功能的实用工具(命名空间NugetMcpServer)Tools/GetInterfaceDefinitionTool.cs - 从NuGet包中提取接口定义Tools/GetClassDefinitionTool.cs - 从NuGet包中提取类、记录和结构定义Tools/ListInterfacesTool.cs - 列出NuGet包中的所有接口Tools/ListTypesTool.cs - 列出NuGet包中的所有类型(类、记录、结构)Tools/GetEnumDefinitionTool.cs - 从NuGet包中提取枚举定义Tools/GetPackageInfoTool.cs - 获取综合包信息和元数据Tools/SearchPackagesTool.cs - 标准包搜索功能Tools/SearchPackagesFuzzyTool.cs - 增强的模糊包搜索Tools/PackageFileTool.cs - 列出并读取NuGet包中的文件Services/NuGetPackageService.cs - 处理NuGet包的核心服务Services/InterfaceFormattingService.cs - 格式化接口定义Services/ClassFormattingService.cs - 格式化类、记录和结构定义Services/EnumFormattingService.cs - 格式化枚举定义Services/ArchiveProcessingService.cs - 处理NuGet包存档Services/MetaPackageDetector.cs - 检测并处理元包Services/Formatters/ - 不同输出类型的专用结果格式器Common/McpToolBase.cs - 具有通用功能的MCP工具基类Extensions/ - 字符串格式化、异常处理和进度通知的扩展方法服务器使用.NET通用主机,包括:
--version或-v支持版本信息关键依赖项:
项目命名空间:
NugetMcpServer - 主命名空间(用于TimeTool.cs)NuGetMcpServer.Tools - 工具组件(所有分析和搜索工具)NuGetMcpServer.Services - 服务组件(包处理、格式化、存档处理)NuGetMcpServer.Common - 共享组件和基类NuGetMcpServer.Extensions - 字符串、异常和进度的扩展方法NuGetMcpServer.Models - 数据模型和结果类型当前版本:1.0.11
你可以使用以下命令检查安装版本:
NugetMcpServer --version
# 或
NugetMcpServer -v