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
  • 资源与上下文
    • 通过 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 服务器作为后台进程由 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

服务器信息