SuperAPI AI 工具集

DotNetMetadataMcpServer

DotNetMetadataMcpServer(又称 .NET Types Explorer MCP Server)是一个模型上下文协议(MCP)服务器,为 AI 编码代理提供 .NET 项目中的详细类型信息,帮助 AI 理解 .NET 代码库并生成准确的代码建议。它通过反射从已编译的 .NET 程序集中提取类、接口、方法、属性、字段、事件等详细信息,并提供程序集浏览、命名空间发现、类型反射、NuGet 包搜索与版本查询等工具。支持配置程序集解析方式(构建输出或 NuGet 缓存)、多 NuGet 源、通配符过滤和分页。需 .NET 10.0 SDK 或更高版本,可原生安装或 Docker 部署。

访问官网

工具介绍

用途

DotNetMetadataMcpServer 是一个 Model Context Protocol(MCP)服务器,旨在为 AI 编码代理提供 .NET 项目中的详细类型信息,帮助 AI 代理理解并处理 .NET 代码库,从而生成更准确、更具上下文感知的代码建议。

主要能力

  • 程序集探索:检索 .NET 项目引用的所有程序集列表。
  • 命名空间探索:发现指定程序集中的所有命名空间。
  • 类型探索:获取指定命名空间中类型的详细信息,包括完整类型名及泛型参数、实现的接口、带参数的构造函数、带返回类型和参数的方法、带类型和访问器的属性、带类型和修饰符的字段、带处理程序类型的事件。
  • NuGet 包搜索:在 nuget.org 上搜索 NuGet 包,支持过滤和分页。
  • NuGet 包版本信息:获取特定 NuGet 包的版本历史和依赖信息。
  • 可配置的程序集解析:可从构建输出、NuGet 全局包缓存(仅需还原,无需构建)解析程序集,或自动尝试两者。
  • 过滤与分页:应用通配符过滤器缩小结果范围,内置分页处理大型结果集。

使用方式

服务器提供五个主要工具供 AI 代理使用:

  • ReferencedAssembliesExplorer:从 .NET 项目中检索引用的程序集。
  • NamespacesExplorer:从指定程序集中检索命名空间。
  • NamespaceTypes:从指定命名空间中检索类型。
  • NuGetPackageSearch:在 nuget.org 上搜索 NuGet 包,支持过滤和分页。
  • NuGetPackageVersions:检索特定 NuGet 包的版本历史和依赖信息。

使用前需满足以下条件:

  • .NET 10.0 SDK 或更高版本。
  • 一个想要探索的 .NET 项目。

安装方式:

  • 原生安装:克隆仓库,构建项目(dotnet build -c Release),发布项目(dotnet publish -c Release -r <runtime-identifier> --self-contained false,将 <runtime-identifier> 替换为目标平台,如 win-x64、linux-x64、osx-x64)。
  • Docker:从 Docker Hub 拉取镜像(docker pull vrogozhin/dotnet-types-explorer-mcp:latest)或本地构建(git clone https://github.com/V0v1kkk/DotNetMetadataMcpServer.git,cd DotNetMetadataMcpServer,docker build -t dotnet-types-explorer-mcp .),然后运行容器(docker run --rm -i -v /path/to/your/dotnet/projects:/workspace vrogozhin/dotnet-types-explorer-mcp:latest)。Docker 部署优势包括无需安装 .NET SDK、环境隔离、跨操作系统一致行为、包含 MSBuild 和所有必需依赖、易于更新。

配置:需要在 MCP 设置文件中配置。原生配置需替换发布可执行文件的实际路径和用户主目录;Docker 配置需替换包含 .NET 项目的目录。支持在 appsettings.json 中配置多个 NuGet 包源(名称、URL(须以 /v3/index.json 结尾)、是否启用),所有启用的源并行查询,结果按包 ID 和版本自动去重;若未配置任何源,则仅添加 nuget.org。源优先级按配置顺序确定,重复包以第一个源为准,元数据来自最高优先级源。还支持配置程序集解析模式(BuildOutput 或 NuGetCache),NuGetCache 模式适用于主要探索第三方包 API 而无需完整构建的场景,全局包文件夹路径从 project.assets.json 自动读取。

适用场景

  • 当处理具有 NuGet 包引用的 .NET 项目,需要使用这些包编写代码时,系统化探索包的 API。
  • 当不熟悉包的 API 或文档有限时。
  • 探索 UI 框架 API 等第三方库。
  • 推荐的自上而下方法:先检索项目引用的程序集,再发现命名空间,最后获取类型详细信息。重点放在第三方库和 NuGet 包,而非 BCL 类型(如 System.* 或 Microsoft.*)。仅在数据量过大或明确知道查找目标时使用过滤。

限制

  • 构建要求取决于解析模式:在 BuildOutput 模式(默认)下,扫描前必须构建项目;在 NuGetCache 模式下,仅需 dotnet restore,服务器直接从 NuGet 全局包缓存解析包程序集。项目特定类型仅在项目已构建时可用。
  • 不跟踪项目间引用:仅检查指定项目及其 NuGet 依赖项。如需分析多个项目,需分别扫描每个项目。
  • 项目输出定位:服务器通过 MsBuildHelper 评估项目并尝试定位输出程序集,按顺序探测配置:请求的配置(默认 Debug)、Release,若仍未找到则回退检查 Debug。第一个存在的输出获胜。若未找到输出,则假定合理默认路径并记录警告。

(注:官网资料还提及未来计划包括添加 NuGet 集成以提供实际包版本信息、迁移到官方 Model Context Protocol C# SDK、支持多个 NuGet 包源(自定义/私有源)、添加依赖图构建能力、改进多项目场景。该工具已与 Roo Code Visual Studio 扩展测试。)