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 守护等处理。
  • 基本使用方法

    • 准备工作:确保 Copilot 客户端能够读取并使用该 MCP 配置(JSON 格式)。配置文件中描述的服务器将作为 Copilot 的工具来源,MCP Wrapper 将负责与本地 MCP 服务器之间的代理通信。
    • 启动代理:先启动 mcp-wrapper 的守护进程(如果配置中启用了 zombie 模式)。代理启动后,将监听客户端请求并对本地 MCP 服务器进行管理与通信。
    • Copilot 客户端交互:在 Copilot 客户端中通过配置的 MCP 服务器进行工具发现、调用与上下文注入。Copilot 将在需要时动态发现工具并进行模式化的调用。
    • 运行注意点:若某些 MCP 服务器不适合 zombie 模式,可以通过配置禁用 zombie(--no-zombie 等方式),代理将转为直接代理模式。
  • 参考与扩展

    • 该实现支持多服务器场景、工具动态发现、服务端与客户端解耦等特性,便于将来扩展更多的工具集与服务端能力。

服务器信息