Chibi MCP Bridge 服务器端实现

  • 项目简介
    • 该仓库实现了一个 MCP 桥接服务器,用于在 MCP 客户端与一个或多个 MCP 服务之间转发请求(如列出工具、调用工具、查询工具结构等),并在需要时对结果进行缓存与汇总。核心组件包括一个 Bridge 处理入口、ServerManager 管理 MCP 服务器、以及对协议的序列化/反序列化和传输适配。
  • 主要功能点
    • 按 MCP 协议处理请求并返回标准化的响应,包含以下三类 MCP 操作:
      • ListTools:列出可用工具及其输入参数(描述字段可被缓存/替换 为摘要信息)。
      • CallTool:在指定服务器上执行工具并返回文本结果。
      • GetSchema:获取指定工具的输入模式/结构。
    • 服务器接入模式
      • Stdio:通过子进程的标准输入/输出进行通信。
      • StreamableHttp:通过可流式传输的 HTTP 接口调用远端 MCP 服务。
    • 本地缓存与摘要
      • 支持对工具摘要进行缓存,提升响应速度,并在需要时从缓存中替换工具描述。
    • 配置和热启动
      • 读取 mcp-bridge.toml 配置,自动启动配置的 MCP 服务器。
    • 容错与调试
      • 错误信息以 JSON/RPC 风格返回,含有错误码和描述,便于调用端处理。
  • 安装与运行步骤
    • 需要 Rust 编译环境(Cargo)。在根项目目录执行构建与运行,与常规 Rust 项目一致。
    • 配置文件:仓库提供了 mcp-bridge.toml,用于定义要连接的 MCP 服务器(名称、命令、参数等)。
    • 运行方式通常是通过构建后的二进制直接启动,桥接服务器会在启动时创建监听端口并输出地址,MCP 客户端通过该地址建立连接。
  • 服务器配置(JSON 结构要点,便于 MCP 客户端理解)
    • 服务器名称(server name):用于在前端对接时标识不同的 MCP 服务。
    • 命令(command):要执行的 MCP 服务的启动命令(仅在 Stdio 模式下使用)。
    • 参数(args):启动命令的参数数组(仅在 Stdio 模式下使用)。
    • 传输模式:Stdio 或 StreamableHttp,根据服务类型选择。
    • 额外头部(headers):如采用 HTTP 流式传输,可在 StreamableHttp 下附带 HTTP 请求头。
    • 注释要点:MCP 客户端不需要此配置,但服务器端需要据此启动并连接到目标 MCP 服务。
    • 示例描述(非代码文本说明):
      • serena 服务:通过本地进程启动,命令为 "serena",参数为 ["--stdio"],采用 Stdio 传输。
      • remote-service:通过 HTTP 端点连接,URL 为 "https://example.org/mcp",可附带自定义头部。
  • 基本使用方法
    • 启动桥接服务器并让其连接到已配置的 MCP 服务。
    • MCP 客户端通过桥接服务器暴露的 JSON-RPC 接口进行发起 ListTools、CallTool、GetSchema 等请求。
    • 如需扩展新的 MCP 服务,只需要在配置中添加新的 server 配置项并重启桥接服务。
  • 备注
    • 该实现提供了一个服务器端框架,面向 MCP 客户端的统一对接入口,真正的 MCP 服务实现(具体 MCP 服务的逻辑)由外部服务器实现提供,通过桥接进行统一调用。

服务器信息