.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 依赖,不会自动分析解决方案中的多个项目之间的引用关系。

信息

分类

开发者工具