Claude Code Studio MCP 服务器端实现

使用说明(简要版,便于快速理解与上手)

  • 项目简介

    • 这是一个完整的 MCP 服务器实现,服务器端不仅托管 Resources(资源)、Tools(工具)和 Prompts(提示模板),还通过内置的 MCP 子服务器(如 mcp-ask-user、mcp-notify)实现与 LLM 客户端的交互。核心逻辑包含会话管理、技能与能力声明,以及对多种传输协议的支持,旨在为 LLM 客户端提供安全、可扩展的上下文服务框架。
  • 主要功能点

    • MCP 核心能力:标准化处理 MCP 请求与响应(如 initialize、tools/list、tools/call 等),并将结果回传给客户端。
    • 资源/工具/提示渲染:集中管理 Resources、Tools、Prompts,支持技能系统与系统提示拼接。
    • 会话管理与能力声明:管理 Claude 会话、模型、任务、工作目录等上下文,提供持久化的会话状态。
    • 内部 MCP 服务:提供 notify_user(非阻塞通知)和 ask_user(需要用户输入的交互)等内部服务,通过 JSON-RPC 与主服务器通信。
    • 多传输协议支持:WebSocket、HTTP(REST) 与 STDIO(通过子进程通信)。支持前端浏览器、Telegram Bot、远程 SSH 等多源接入。
    • 安全性与稳定性:对 tokens、认证、权限、输入输出进行多层保护,并具备任务队列、重试与跨会话上下文传播能力。
  • 安装步骤

    • 将代码获取到本地环境(如通过 git 克隆或 npm/npx 方式安装)。
    • 安装依赖并配置环境变量(如 PORT、WORKDIR、CLAUDE_TIMEOUT_MS 等)。
    • 运行服务器:node server.js 或通过 npx 启动的方式进入 MCP 服务器模式。
    • 通过配置 config.json 中的 mcpServers,定义需要的 MCP 服务(如内部 Ask/Notify 服务)以及外部 MCP 服务。
  • 服务器配置(MCP 服务器给 MCP 客户端使用的配置示例说明)

    • MCP 服务器的核心是一个“config.json”文件,其中包含 mcpServers 字段,用于描述需要注入的 MCP 服务以及各自的启动方式。仓库中实现了两条内部 MCP 服务的注入:_ccs_ask_user 与 _ccs_notify。

    • 内部 MCP 服务示例(描述性信息,非代码块形式):

      • 名称:Ask User MCP
        • 启动命令:node
        • 参数:mcp-ask-user.js
        • 环境变量:ASK_USER_SERVER_URL(如 http://127.0.0.1:3000),ASK_USER_SESSION_ID(会话标识,用于路由到正确的客户端),ASK_USER_SECRET(单进程认证密钥)。
      • 名称:Notify MCP
        • 启动命令:node
        • 参数:mcp-notify.js
        • 环境变量:NOTIFY_SERVER_URL(如 http://127.0.0.1:3000),NOTIFY_SESSION_ID(会话标识),NOTIFY_SECRET(单进程认证密钥)。
    • 说明:这两条内部 MCP 服务通过 STDIO 与主 Claude Code Studio 服务进行 JSON-RPC 通信,并对外暴露帮助实现 Ask User 与 Notify(非阻塞通知)的能力。这些服务的定义在 config.json 的 mcpServers 字段中(名称、命令、参数、环境变量等均用于客户端将 MCP 服务接入到工作流中)。请确保客户端在连接时能够访问这些服务器,并以正确的 sessionId 路由到对应的客户端实例。

    • 你可以参照如下描述性示例来理解配置需求(非代码块呈现):

      • mcpServers 字段包含两个条目:
        • 黑标 _ccs_ask_user:类型为命令型,命令为 node,参数为 [“mcp-ask-user.js”],环境变量包含 ASK_USER_SERVER_URL、ASK_USER_SESSION_ID、ASK_USER_SECRET。
        • 黑标 _ccs_notify:类型为命令型,命令为 node,参数为 [“mcp-notify.js”],环境变量包含 NOTIFY_SERVER_URL、NOTIFY_SESSION_ID、NOTIFY_SECRET。
    • 说明:MCP 客户端在启动时会读取全局配置并将内置的 MCP 服务注入到运行时,通过这些服务实现与用户的交互与通知能力,配合主服务提供统一的上下文管理与任务调度。

  • 基本使用方法(简易路径)

    • 启动与运行
        1. 获取源码并进入项目目录。
        1. 安装依赖并确保 Node.js 环境可用。
        1. 设置工作目录与端口等必要环境变量(如 PORT、WORKDIR、CLAUDE_TIMEOUT_MS)。
      1. 启动服务器:node server.js。
    • 使用 MCP 客户端
      • MCP 客户端在连接时需要访问 MCP 服务器提供的服务(通过 STDIO/HTTP),并在配置中指定启动命令及参数来接入内部 MCP 服务(Ask User、Notify 等)。
    • 运行后的日常操作
      • 通过 MCP 客户端向服务器发起标准 MCP 请求(initialize、tools/list、tools/call 等),获得相应的 JSON-RPC 响应。
      • 服务器将资源、工具与提示模板渲染给 LLM 客户端,并实现会话与任务调度的能力。
  • 基本注意事项

    • MCP 服务的正确工作依赖于 config.json 与内部 MCP 服务的正确注入,确保环境变量与会话上下文正确传递。
    • 安全性与鉴权:服务器端提供多层安全措施,MCP 客户端在接入时应遵循服务器的认证与授权机制。
    • 该实现包含了完整的服务端能力、内部 MCP 服务以及与 Claude CLI/Telegram 等外部组件的对接,属于较完整的 MCP 服务器端实现,非单纯示例或测试代码。
  • 参考与扩展

    • 服务器具备资源/工具/Prompts 的标准化管理能力,方便扩展新的技能、工具或 Prompts。
    • 通过内置 MCP 服务实现与 LLM 的无缝交互,如需要与外部模型提供商整合,也可通过配置扩展新的 MCP 服务。

服务器信息