项目简介 'ancplua-mcp' 是一个为 .NET 开发者设计的 MCP 服务器家族,它通过提供丰富的工具集,让大型语言模型(LLM)客户端能够更好地理解和操作开发环境。这些服务器可以帮助 LLM 执行代码构建、测试、Git操作、文件管理、分析NuGet包以及协调多个AI代码评审服务,从而提升AI辅助开发的效率和准确性。它支持多种传输协议,如标准输入输出 (Stdio) 和 HTTP,使其能够灵活地集成到各种开发环境和AI客户端中。
主要功能点
- 工作站工具 (WorkstationServer):
- 文件系统操作:读取、写入、列出文件和目录,支持路径安全检查。
- Git 版本控制:获取仓库状态、分支信息、提交日志和差异,执行添加和提交操作。
- CI/CD 工具:执行 '.NET' 项目的构建、测试和依赖恢复,支持运行自定义命令。
- NuGet 包管理:搜索、获取包元数据、比较版本API差异、提取API表面信息,甚至反编译代码,帮助理解未知或新的包API。
- Roslyn 代码分析:进行C#和VB.NET代码的度量分析,生成代码质量报告,查询复杂性、可维护性等指标。
- 架构工具:分析项目架构,提供项目结构摘要。
- HTTP 服务器 (HttpServer):通过 HTTP 协议提供上述大部分工作站工具,适用于远程、共享或多租户部署场景。
- AI 服务编排 (AIServicesServer):发现和查询多种AI服务(如Claude, Gemini, Copilot, CodeRabbit, Jules等),未来将支持服务间路由、工作流和上下文共享。
- GitHub 应用集成 (GitHubAppsServer):直接与 GitHub Apps 集成,提供触发AI评审、获取覆盖率等GitHub工作流功能。
安装步骤
- 先决条件:
- 安装 .NET SDK 8.0 或更高版本。
- 安装 Git (如果需要使用Git相关功能)。
- 确保您的环境中已安装 Docker (如果需要运行Dockerized的AIServicesServer)。
- 安装 NATS 服务器 (如果计划使用 WhisperMesh 功能)。
- 克隆仓库:
git clone https://github.com/ANcpLua/ancplua-mcp.git cd ancplua-mcp - 构建和测试:
这将编译所有服务器项目并运行单元测试。dotnet build dotnet test # 或者运行本地验证脚本 ./tooling/scripts/local-validate.sh
服务器配置 (客户端所需)
为了让您的 MCP 客户端(如 Claude Desktop / Claude Code 或 GitHub Copilot Coding Agent)能够连接并使用这些服务器提供的工具,您需要将以下 JSON 配置添加到客户端的配置文件中(通常是 'claude.mcp' 或 '.mcp.json')。请根据您想使用的服务器类型进行选择性配置。
{ "mcpServers": { // WorkstationServer:本地开发环境专用,通过标准输入输出(stdio)通信 "ancplua-workstation": { "type": "stdio", "command": "dotnet", "args": [ "run", "--no-build", "--project", "src/Ancplua.Mcp.WorkstationServer/Ancplua.Mcp.WorkstationServer.csproj" ], "comment": "用于本地文件系统、Git、CI/CD操作的MCP服务器。" }, // HttpServer:远程或共享环境专用,通过HTTP通信 (注意:客户端仍通过stdio启动进程,进程内部会监听HTTP端口) "ancplua-http": { "type": "stdio", "command": "dotnet", "args": [ "run", "--no-build", "--project", "src/Ancplua.Mcp.HttpServer/Ancplua.Mcp.HttpServer.csproj" ], "comment": "提供HTTP接口的MCP服务器,默认监听 https://localhost:5001 或 http://localhost:5000。" }, // AIServicesServer:用于发现和编排AI代码评审服务,通过标准输入输出(stdio)通信 "ancplua-ai-services": { "type": "stdio", "command": "dotnet", "args": [ "run", "--no-build", "--project", "src/Ancplua.Mcp.AIServicesServer/Ancplua.Mcp.AIServicesServer.csproj" ], "comment": "用于发现和编排AI代码评审服务的MCP服务器。" }, // GitHubAppsServer (计划中):用于直接集成GitHub App工作流,通过标准输入输出(stdio)通信 "ancplua-github-apps": { "type": "stdio", "command": "dotnet", "args": [ "run", "--no-build", "--project", "src/Servers/Stdio/GitHubApps/Program.cs" ], "comment": "用于GitHub App集成(如AI评审器、覆盖率机器人)的MCP服务器。" }, // RoslynMetricsServer:用于Roslyn代码分析和NuGet包检查,通过标准输入输出(stdio)通信 "ancplua-roslyn-metrics": { "type": "stdio", "command": "dotnet", "args": [ "run", "--no-build", "--project", "src/Servers/Stdio/RoslynMetrics/Program.cs" ], "comment": "提供Roslyn代码度量和NuGet包API分析功能的MCP服务器。" } // 您也可以在此处添加外部的MCP服务器配置,详情请参考MCP客户端文档 } }
基本使用方法 配置好 MCP 客户端后,当您向 LLM 客户端提出问题或指令时,如果指令涉及到服务器提供的工具功能,客户端将通过配置的 MCP 服务器调用相应的工具。
示例 (以支持 MCP 的 LLM 客户端为例,假设已配置 WorkstationServer):
- 文件操作:如果您想让LLM读取项目中的某个文件,您可以这样提问: '"请读取文件 'src/Program.cs' 的内容。"' LLM 客户端会通过 'ancplua-workstation' 服务器调用 'FileSystemTools.ReadFileAsync' 工具来获取文件内容。
- Git 状态查询: '"这个仓库当前的 Git 状态是什么?"' LLM 客户端会调用 'GitTools.GetStatusAsync' 工具来获取 Git 仓库状态。
- 构建项目: '"请构建这个项目。"' LLM 客户端会调用 'CiTools.BuildAsync' 工具来执行 'dotnet build' 命令。
- 查询NuGet包API: '"请显示 Newtonsoft.Json 12.0.0 和 13.0.0 之间的 API 变更报告。"' LLM 客户端会调用 'PackageInspectorTools.GetVersionDiffReport' 工具来提供详细的API差异报告。
- 触发AI评审 (需配置 AIServicesServer 和 GitHubAppsServer): '"请为 ANcpLua/ancplua-mcp 仓库的 PR #123 触发所有 AI 评审器。"' 客户端会调用 'AIOrchestrationTools.TriggerAllReviewers' 工具,然后该工具将指导AI如何触发外部AI评审服务。
信息
分类
开发者工具