Copilot MCP Wrapper 服务器
使用说明(Markdown 格式)
-
项目简介
- 该仓库提供一个用于 Copilot 场景的 MCP 服务基础设施,其中包含一个名为 mcp-wrapper 的独立组件。该组件实现了一个 MCP 服务器代理(Zombie 守护进程),能够管理本地 MCP 服务器进程、通过 JSON-RPC 与客户端通信、实现请求转发与 ID 重映射,以及对可用工具的动态发现与暴露,从而为 LLM 客户端提供稳定的工具集与上下文信息。
-
主要功能点
- 支持通过 JSON-RPC 与客户端进行通信,处理初始化握手、工具列表查询等 MCP 流程。
- 启动、复用与管理本地 MCP 服务器进程,实现多客户端并发访问的代理。
- 通过 zombie 守护进程实现对部分 MCP 服务器的持续进程保活,降低冷启动开销与鉴权 token 的重新获取成本。
- 动态发现工具(tools/list)并将服务器工具以服务器名前缀形式暴露,支持多服务器场景。
- 将本地 MCP 服务器通过 mcp-wrapper 进行环境变量传播和工作目录管理,确保在不同会话间保持一致性。
- 支持按需筛选与扩展工具集,确保 Copilot 客户端看到的是准确且可控的工具集合。
- 提供本地与远程 MCP 服务器的配置能力,通过 JSON 配置文件描述服务器名称、启动命令、参数、工作目录、环境变量及工具过滤等。
-
安装步骤
- 确保机器上已安装 .NET 8 及以上版本,且具备基本的开发/运行环境。
- 进入 mcp-wrapper 子目录,执行构建命令以生成可执行文件。
- 运行守护进程:在需要持续保活的场景下,启动 mcp-wrapper 的守护模式(daemon)。
- 配置 MCP 服务器:按需求准备一个 MCP 配置文件,描述要托管的本地服务器以及工具分发等信息。
- 与客户端连接:MCP 客户端在准备就绪后可以通过配置中的 MCP 服务器信息连接到该 MCP 服务器代理,获得可用资源与工具的上下文。
-
服务器配置(给 MCP 客户端的说明)
- MCP 服务器的配置通过一个 JSON 文件来描述服务器的集合。每个服务器包含以下信息:
- server 名称:用于标识该 MCP 服务器的唯一名称,例如 ado、grafana-mcp、kusto-mcp 等。
- 指定命令(command):启动本地 MCP 服务器进程所执行的命令。
- 参数(args):传递给启动命令的参数列表。
- 工作目录(cwd,可选):启动进程的工作目录。
- 环境变量(env,可选):需要注入到服务器进程中的环境变量键值对。
- 类型与超时(type、timeout,可选):本地还是远程服务器、启动超时等设置。
- 工具集合(tools,可选,默认为 ["*"]):该服务器暴露的工具集合,若包含通配符将通过动态发现进行扩展。
- 说明:MCP 客户端需要从该配置中获取服务器信息,以便建立连接并通过代理进行工具发现与调用。配置文件中如包含远程服务器,则该远程服务器将通过公共接口进行访问;本地服务器将通过 mcp-wrapper 进行环境变量传播和 zombie 守护等处理。
- MCP 服务器的配置通过一个 JSON 文件来描述服务器的集合。每个服务器包含以下信息:
-
基本使用方法
- 准备工作:确保 Copilot 客户端能够读取并使用该 MCP 配置(JSON 格式)。配置文件中描述的服务器将作为 Copilot 的工具来源,MCP Wrapper 将负责与本地 MCP 服务器之间的代理通信。
- 启动代理:先启动 mcp-wrapper 的守护进程(如果配置中启用了 zombie 模式)。代理启动后,将监听客户端请求并对本地 MCP 服务器进行管理与通信。
- Copilot 客户端交互:在 Copilot 客户端中通过配置的 MCP 服务器进行工具发现、调用与上下文注入。Copilot 将在需要时动态发现工具并进行模式化的调用。
- 运行注意点:若某些 MCP 服务器不适合 zombie 模式,可以通过配置禁用 zombie(--no-zombie 等方式),代理将转为直接代理模式。
-
参考与扩展
- 该实现支持多服务器场景、工具动态发现、服务端与客户端解耦等特性,便于将来扩展更多的工具集与服务端能力。