Xcode Copilot MCP 服务端实现

使用说明

  • 项目简介 该仓库实现了一个用于 LLM 客户端的本地 MCP 服务端,能够管理资源、注册并执行工具、定义并渲染提示模板,并通过标准化的 JSON-RPC 接口与客户端通信。还提供了用于工具桥接的路由、会话管理、以及对多种提供者(OpenAI、Claude、Codex)的支持。

  • 主要功能点

    • MCP 核心接口支撑:处理 initialize、tools/list、tools/call 等 MCP 请求,返回标准的 JSON-RPC 结构。
    • 流式传输能力:通过 SSE/Streaming 模式向客户端持续输出工具调用、进度与结果。
    • 资源与工具管理:提供工具缓存、工具解析与参数规范化,支持将工具信息通过 MCP 暴露给客户端。
    • 提示模板处理:在请求进入前对提示做过滤与定制化渲染,确保上下文安全与可控。
    • 场景化提供者支持:实现对 OpenAI、Claude、Codex 等提供者的适配与路由,提供不同的后台执行模式(本地 MCP 服务、远程 MCP 等)。
    • 会话与状态管理:内置 ConversationManager、ToolBridgeState、SesionLifecycle 等,确保会话隔离、清理与重用策略。
  • 安装步骤

    • 依赖环境:Node.js 版本需满足仓库要求,确保具有 TypeScript 编译与运行能力。
    • 全局安装与启动(示例性步骤):通过 npm install 构建依赖后,使用提供的启动命令启动服务,配置文件可通过 config.json5 指定,支持单一提供者模式或 Auto 模式开启全部提供者。
    • 运行验证:启动后应能够接受 MCP 客户端的请求,按 MCP 规范返回 initialize、tools/list、tools/call 的响应,并支持 SSE 流式输出。
  • 服务器配置( MCP 客户端连接用) 说明:MCP 客户端需要知道启动 MCP 服务器的命令及参数,以建立连接。以下为示例配置要点,实际请据仓库的 config.json5 结构进行设置。JSON 表示方式仅作说明,实际使用时请按客户端要求的格式提供。

    • server name 与执行命令

      • 名称示例:xcode
      • 本地 MCP 服务器启动命令:xcrun
      • 参数示例:mcpbridge
      • 说明:该服务器将作为本地 MCP 服务桥接,提供对 Xcode/Copilot 环境的上下文与工具访问。
    • 允许的工具

      • 对应的允许工具字段可以设置为 ["*"] 以允许全部工具,或限定具体名称列表。
    • 其他字段

      • type: local
      • command: xcrun
      • args: ["mcpbridge"]
      • 可能的扩展字段:env、cwd、timeout(取值正数)
    • 结构化示例(说明用,实际请以 JSON5/JSON 形式提供给 MCP 客户端)

      • openai: { toolBridge: false, mcpServers: { xcode: { type: "local", command: "xcrun", args: ["mcpbridge"], allowedTools: ["*"] } } }
    • 说明 MCP 客户端通过该配置信息即可启动并连接 MCP 服务器,建立与后端的上下文与工具执行桥接。此处仅给出参数和字段含义,具体配置请依据项目实际需求进行组合。

  • 基本使用方法

    • 启动服务后,客户端通过 MCP 接口按 JSON-RPC 调用 initialize、tools/list、tools/call 等方法来获取工具清单、执行工具以及获取返回的文本内容。
    • 客户端可通过 SSE 方式订阅对话中的进展、工具调用与输出,服务器负责维护会话状态与工具调用的正确绑定。
    • 如需切换提供者或开启单 Provider 模式,可通过配置中 --proxy/ proxy 设置实现,或使用相应的启动参数进行单 Provider 启动。

服务器信息