Spacebot MCP Server
使用说明
- 项目简介 Spacebot MCP 服务器是在 Spacebot 框架内实现的外部模型上下文协议(MCP)服务器。它负责暴露和管理资源(数据访问)、工具(外部功能调用)以及 Prompt 模板(LLM 交互模板)的服务端能力,允许 LLM 客户端通过标准的 JSON-RPC 调用来读取资源、调用工具、获取并渲染 Prompts。服务器支持多传输协议(如 STDIO、HTTP)并提供自动重连、热重载等特性,确保在复杂多用户场景中的可靠性与可扩展性。
- 主要功能点
- 资源与数据访问:提供对资源的托管、版本化和查询能力,方便 LLM 侧通过 MCP 获取所需上下文数据。
- 工具注册与执行:通过 MCP 自动发现并注册工具服务,LLM 可以通过服务器访问外部功能(如 API 调用、数据库访问、文件操作等)。
- Prompt 模板定义与渲染:定义可定制的 Prompt 模板,按需渲染并提供给 LLM 使用,支持灵活的交互模式。
- JSON-RPC 通信:遵循 MCP 规范,以 JSON-RPC 风格收发请求与响应,确保跨语言、跨平台的互操作性。
- 多传输与热加载:支持 STDIO(本地工具)和 HTTP(远程服务器)两种传输,且支持配置变更的热重载,断线重连策略在后台自动重连。
- API 监控与管理:提供对 MCP 服务器的注册、状态与监控的 API,便于运行时管理与观测。
- 会话与权限管理:处理会话、能力声明,以及对资源/工具的访问权限控制,提升安全性与可控性。
- 安装与运行
- 构建:在仓库根目录执行构建,生成包含 MCP 服务的二进制。
- 启动:以 Spacebot 主二进制在系统上运行,MCP 服务作为其组件之一随主守护进程启动并暴露 MCP 接口。
- 配置:在 agent 配置中通过 config.toml 声明 MCP 服务器(名称、传输方式、连接参数等),服务器会热加载配置变化并对外暴露 API。
- 连接客户端:MCP 客户端通过指定的服务器名称与传输方式连接,并使用标准的 JSON-RPC 调用与 MCP 服务交互。
- 服务器配置示例(可用于 MCP 客户端理解的 JSON 描述,实际配置仍以仓库中的 config.toml 为准)
[
{
"server_name": "filesystem",
"transport": "stdio",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/workspace"],
"notes": "通过本地子进程 STDIO 传输的服务器,提供文件系统相关的资源/工具访问"
},
{
"server_name": "sentry",
"transport": "http",
"url": "https://mcp.sentry.io",
"headers": {
"Authorization": "Bearer ${SENTRY_TOKEN}"
},
"notes": "远程 MCP 服务,HTTP 传输,进行外部 API 与数据访问的映射"
}
]
说明
- server_name 表示 MCP 服务对外的标识名称,需在客户端一致;
- transport 表示传输方式,stdio 表示本地子进程交互,http 表示远端 MCP 服务,通过 HTTP 通道通信;
- command/args 仅在 stdio 传输时使用,用于指定外部 MCP 服务的可执行命令及参数;
- url/headers 仅在 http 传输时使用,指定远程 MCP 服务的地址和请求头信息。
- 基本使用方法
- 在 Spacebot 的配置中注册 MCP 服务器,确保 Spacebot 启动时自动加载并尝试连接已配置的 MCP 服务。
- 客户端通过 MCP 接口发起资源查询、工具调用、以及 Prompt 获取请求,由 MCP 服务器统一管理和路由到对应的服务实现。
- 如服务器断线,系统会在后台自动重连,确保服务可用性。
- 当需要新增、修改或移除 MCP 服务器时,可在配置中热加载,服务器会对变更进行 reconciler,尽量避免阻塞现有工作流。