Spacebot MCP 服务器端

使用说明(Markdown 格式)

  • 项目简介 Spacebot 内置了一个 MCP 服务器实现,能够以标准化的方式暴露资源、工具和 Prompt 模板给 LLM 客户端,通过 JSON-RPC 或 WebSocket 等传输协议进行通信。服务器具备会话管理、能力声明、工具注册与自动发现、以及对外暴露的管理 API,便于将外部工具接入到 LLM 的推理与执行流程中。

  • 主要功能点

    • 资源与数据访问:以 MCP 资源形式托管并提供跨任务的访问能力,方便 LLM 进行同一上下文下的数据共享与访问。
    • 工具注册与执行:注册并管理 MCP 服务器中的工具,LLM 可通过统一接口调用外部功能(如 API、数据库、脚本等)。
    • Prompt/模板管理:提供可自定义的 Prompt 模板以支撑不同的交互模式与上下文渲染。
    • 多传输协议支持:支持 stdio(本地工具)和 HTTP(远程 MCP 服务器)等传输方式,方便本地或远程工具接入。
    • 自动发现与热Reload:工具服务器在启动时自动发现 MCP 服务器暴露的工具,配置变更可热 Reload,不阻塞 agent 启动。
    • API 管理与监控:提供 /api/mcp/ 等端点用于服务端定义、状态与监控的编程化访问。
    • 会话与并发管理:为多代理/多通道场景设计的并发安全上下文,确保上下文信息与工具调用的隔离。
  • 安装与运行

    • 在本地构建 Spacebot 二进制即可,MCP 相关功能随总仓实现一起编译。确保依赖安装完整后执行编译产物即可运行 MCP 相关服务。
    • 运行后,MCP 服务将从 Agent 配置中读取 MCP 服务器定义,启动对应的资源与工具暴露通道,并对外提供管理接口。
  • 服务器配置(JSON,用于 MCP 客户端启动与连接) 说明:MCP 客户端在连接 MCP 服务器时需要提供服务器名称、传输方式以及启动该服务器的参数。以下示例展示两种常见传输方式的定义,实际使用时请按需要进行扩展。

    [ { "server_name": "filesystem", "transport": "stdio", "command": "npx", "args": ["-y", "@modelcontextprotocol/server-filesystem", "/workspace"] }, { "server_name": "sentry", "transport": "http", "url": "https://mcp.sentry.io", "headers": { "Authorization": "Bearer ${SENTRY_TOKEN}" } } ]

    字段说明:

    • server_name: MCP 服务器的名称,用于区分不同的工具源与命名空间,便于在 LLM 端进行引用。
    • transport: 传输通道类型,可以是 "stdio"(子进程的标准输入输出)或 "http"(远程 MCP 服务的 HTTP 端点)。
    • command: 启动本地工具服务器时的可执行程序名。
    • args: 启动本地工具服务器时的参数数组,逐项传递给命令。
    • url: 远程 MCP 服务器的访问地址(仅在 transport 为 http 时使用)。
    • headers: 远程 MCP 服务器的请求头(如需要认证等场景)。 注:以上配置仅用于 MCP 客户端连接示例,实际在 Spacebot 内部会通过配置文件读取并解析,无需客户端自行实现。
  • 基本使用方法

    1. 在 Spacebot 配置中添加 MCP 服务器定义(如上述 JSON 结构),确保服务名称、传输和启动参数准确无误。
    2. 启动 Spacebot 服务,MCP 子系统将读取配置,并按定义启动对应的资源服务器与工具服务器。
    3. LLM 客户端通过 MCP 提供的工具访问接口进行资源读取、工具调用、以及 Prompt 渲染等任务。
    4. 可以通过 Spacebot 提供的管理 API(如 /api/mcp/)监控与管理 MCP 服务器的连接状态、重连策略等。
    5. 如需热Reload,修改配置后触发服务端的热重载流程,MCP 服务器将 reconciled 新的服务器定义,不阻塞现有任务。

服务器信息