Copilot CLI IDE MCP Server
使用说明(Markdown)
项目简介
- 该仓库实现了一个 MCP 服务器端,用于 Copilot CLI 与 Visual Studio 的集成。服务器通过命名管道提供一个 MCP 身份的后端,向 Copilot CLI 客户端暴露工具集合、诊断信息、选中文本等上下文信息,并通过实时推送通知完成交互。
主要功能点
- MCP 协议处理
- 通过 HTTP 零碎框架在底层管道上接收和解析 MCP 请求,生成 JSON-RPC 风格的响应。
- 支持初始化、工具列表、工具调用、读取文件、获取选择、获取诊断、打开/关闭 Diff、获取 VS 信息等核心能力。
- 工具注册与执行
- 以特性驱动发现工具(McpServerToolType、McpServerToolAttribute 等),将方法暴露为 MCP 工具,包含:
- get_vscode_info
- get_selection
- get_diagnostics
- read_file
- open_diff
- close_diff
- update_session_name
- 以特性驱动发现工具(McpServerToolType、McpServerToolAttribute 等),将方法暴露为 MCP 工具,包含:
- 资源与上下文
- 通过 VsServiceRpc(IVsServiceRpc)与 Visual Studio 的内置服务对接,获取选择、诊断、读取文件等数据。
- 推送通知
- 采用 SSE(Server-Sent Events)向 Copilot CLI 客户端推送 selection_changed、diagnostics_changed 等通知。
- 引入 DebouncePusher 实现 200ms 的去抖,避免冗余通知。
- 服务器生命周期与管道
- 通过 McpPipeServer 启动 MCP 会话,处理管道内的长连接与多路复用。
- ServerProcessManager 启动并管理 MCP 服务进程;IdeDiscovery 处理 Visual Studio 的锁文件,便于 Copilot CLI 发现并连接。
- 测试覆盖
- 提供广泛的单元测试与集成测试覆盖(Http 解析、工具发现、序列化、Traffic Replay 等)。
安装步骤
- 依赖环境
- .NET 10.0 SDK(用于构建 MCP 服务器)
- Visual Studio(需要的扩展环境)
- 构建步骤(在仓库根目录执行):
- 构建 MCP 服务器:
- dotnet build src/CopilotCliIde.Server/CopilotCliIde.Server.csproj
- 构建 VS 扩展(需要在 VS 中使用 MSBuild 构建,建议直接在 VS 内部构建):
- msbuild src/CopilotCliIde/CopilotCliIde.csproj /p:Configuration=Debug
- 构建 MCP 服务器:
- 运行与调试
- MCP 服务器作为后台进程由 Copilot CLI 组件管理,通常通过 VS 扩展初始化时自动启动。
- 服务器日志将输出到 VS 的输出窗口,用于调试桥接过程。
服务器配置(MCP 客户端连接所需信息)
请使用如下 JSON 配置用于描述 MCP 服务器的启动信息(客户端无需此信息,但用于理解服务器端配置与启动参数): { "serverName": "Copilot CLI IDE MCP Server", "command": "dotnet", "args": [ "CopilotCliIde.Server.dll", "--rpc-pipe <rpc-pipe-name>", "--mcp-pipe <mcp-pipe-name>", "--nonce <nonce>" ], "description": "Visual Studio 内部的 MCP 服务端,用于 Copilot CLI 的上下文与工具调用。" }
说明:
- rpc-pipe、mcp-pipe、nonce 等参数由宿主应用在运行时生成,确保通信信道唯一并带有简单鉴权。
- 客户端(Copilot CLI)在连接时不需要额外的客户端配置;服务器端的启动参数用于创建并暴露 MCP 通道。
基本使用方法
- 启动与联调
- 打开 Visual Studio 并打开一个解决方案,扩展会在解决方案加载时自动启动 MCP 服务器。
- Copilot CLI 在终端中执行 /ide,将通过 MCP 通道连接到 VS 实例,形成上下文交互桥接。
- 主要交互方式
- 获取当前选择、诊断信息、并在 Bedarf 的时候打开 Diff、以及读取目标文件内容。
- Copilot CLI 可以调用工具(如 get_selection、get_diagnostics、read_file、open_diff 等)来获取上下文或进行代码评审。
- 调试与日志
- 服务器通过 VS Output 窗口的“Copilot CLI IDE”分组输出日志,帮助定位连接、通信、和工具调用的过程。
关键词
Visual Studio 插件, Copilot CLI 集成, 工具桥接, 代码诊断同步, 代码查看与比对
分类
1