.NET 类型信息 MCP 服务器

.NET 类型信息 MCP 服务器

项目简介

.NET 类型信息 MCP 服务器是一个基于 Model Context Protocol (MCP) 构建的后端服务,旨在帮助 AI 编码助手理解和操作 .NET 代码库。它通过反射技术提取 .NET 项目中程序集、命名空间和类型的详细信息,并以结构化的方式提供给 AI 助手,从而辅助代码生成和智能提示。此外,服务器还集成了 NuGet 包搜索功能,方便 AI 助手查找和探索 NuGet 包的 API。

主要功能点

  • 程序集浏览: 列出指定 .NET 项目引用的所有程序集名称。
  • 命名空间浏览: 发现指定程序集中的所有命名空间。
  • 类型浏览: 获取指定命名空间中类型的详细信息,包括类型名称、实现的接口、构造函数、方法、属性、字段和事件等。
  • NuGet 包搜索: 在 nuget.org 上搜索 NuGet 包,支持关键词搜索、预发布版本和分页浏览。
  • NuGet 包版本信息: 获取指定 NuGet 包的版本历史和每个版本的依赖信息。
  • 结果过滤与分页: 所有浏览和搜索功能都支持使用通配符进行结果过滤和分页查看,方便处理大型项目和海量数据。

安装步骤

  1. 克隆仓库
    git clone https://github.com/V0v1kkk/DotNetMetadataMcpServer.git
    cd DotNetMetadataMcpServer
  2. 构建项目
    dotnet build -c Release
  3. 发布项目
    dotnet publish -c Release -r <runtime-identifier> --self-contained false
    将 '<runtime-identifier>' 替换为你的目标操作系统标识符,例如 'win-x64' (Windows 64位), 'linux-x64' (Linux 64位) 或 'osx-x64' (macOS 64位)。

服务器配置

要将 .NET 类型信息 MCP 服务器配置到 MCP 客户端(如 AI 编码助手)中,需要在 MCP 客户端的配置文件中添加 server 配置。以下是一个配置示例,你需要根据实际情况修改 'command' 和 'args' 字段:

{
  "mcpServers": {
    "dotnet-types-explorer": { //  服务器名称,可以自定义,用于在客户端中引用
      "command": "/path/to/DotNetMetadataMcpServer", //  **[请替换为实际路径]** DotNetMetadataMcpServer 可执行文件的绝对路径
      "args": [ "--homeEnvVariable", "/home/user" ], // **[请替换为实际路径]** 你的用户 Home 目录的路径,服务器需要访问该目录下的 .NET 项目
      "disabled": false, //  设置为 true 禁用此服务器,设置为 false 启用
      "alwaysAllow": [],
      "timeout": 300 //  请求超时时间,单位秒
    }
  }
}

基本使用方法

配置完成后,MCP 客户端即可通过以下工具 (Tools) 与服务器交互,获取 .NET 项目的元数据:

  1. ReferencedAssembliesExplorer: 输入参数为 '.NET 项目文件绝对路径',返回项目引用的程序集名称列表。
  2. NamespacesExplorer: 输入参数为 '.NET 项目文件绝对路径' 和 '程序集名称列表 (可选)',返回指定程序集或所有程序集中的命名空间列表。
  3. NamespaceTypes: 输入参数为 '.NET 项目文件绝对路径' 和 '命名空间列表 (可选)',返回指定命名空间或所有命名空间中的类型详细信息。
  4. NuGetPackageSearch: 输入参数为 '搜索关键词',返回 NuGet 包搜索结果。
  5. NuGetPackageVersions: 输入参数为 'NuGet 包 ID',返回指定 NuGet 包的版本信息。

AI 编码助手可以通过调用这些工具,并根据工具的输入参数描述构造 JSON 请求,发送给 MCP 服务器,从而获取所需的 .NET 代码库信息。

使用限制

  • 构建项目: 使用类型信息浏览工具前,请务必先构建你的 .NET 项目,确保服务器能够访问到已编译的程序集文件。
  • 单项目分析: 服务器仅分析指定的单个 .NET 项目及其 NuGet 依赖,不会自动分析解决方案中的多个项目之间的引用关系。

服务器信息