使用说明

项目简介

MCP Router 是一个专为 Model Context Protocol (MCP) 服务器设计的代理服务。它充当 MCP 客户端和实际的 MCP 服务器之间的桥梁,主要负责请求的路由、连接的管理以及配置的集中化处理。通过 MCP Router,客户端可以更方便地接入和管理多个 MCP 服务器,而无需直接与复杂的后端服务交互。

主要功能点

  • MCP 协议代理: 完全兼容 MCP 协议,能够解析和转发 MCP 客户端的 JSON-RPC 请求和响应。
  • 连接管理: 处理客户端的 SSE (Server-Sent Events) 连接,并维护与后端 MCP 服务器的会话。
  • 工具管理API: 提供 RESTful API 接口,允许客户端通过 API 方式列出和调用 MCP 服务器提供的工具 (Tools)。
  • 灵活配置: 通过 TOML 配置文件管理后端 MCP 服务器的连接信息和命令,支持本地配置和远程 API 配置。
  • 安全增强: 作为代理层,可以增加额外的安全策略,例如鉴权、限流等(当前仓库代码未体现,但架构上具备扩展性)。

安装步骤

  1. 下载仓库代码:

    git clone https://github.com/chatmcp/mcprouter.git
    cd mcprouter
  2. 配置服务器参数: 复制示例配置文件并根据需要修改 '.env.toml' 文件。

    cp .env.example.toml .env.toml

    编辑 '.env.toml' 文件,配置 MCP 服务器的相关信息,例如启动命令等。

  3. 启动代理服务器 (Proxy Server):

    go run main.go proxy

    这将启动 SSE 代理服务器,默认监听 '8025' 端口。

  4. 启动 API 服务器 (API Server):

    go run main.go api

    这将启动 RESTful API 服务器,默认监听 '8027' 端口。

服务器配置

MCP Router 的配置主要通过 '.env.toml' 文件进行。以下是一个配置示例,展示了如何配置一个名为 'fetch' 的 MCP 服务器。请注意,MCP 客户端需要配置的是 MCP Router 的地址和密钥 (server key),而不是直接配置后端 MCP 服务器的启动命令。

[proxy_server]
port = 8025

[api_server]
port = 8027

[remote_apis]
get_server_config = "http://localhost:8028/v1/server-config" # 可选,远程获取服务器配置的 API 地址

[mcp_servers]
  [mcp_servers.fetch] # 服务器名称,客户端使用此名称连接
    server_uuid = "your_server_uuid" # 可选,服务器 UUID
    server_name = "My Fetch Server"  # 可选,服务器显示名称
    server_key = "fetch"           # 客户端连接时使用的密钥,对应 SSE 端点 /sse/{key} 和 API 鉴权
    command = "/path/to/your/mcp-server fetch --stdio" # 后端 MCP 服务器的启动命令,例如:java -jar mcp-server.jar fetch --stdio
    share_process = false           # 可选,是否共享进程,默认为 false

配置说明:

  • '[mcp_servers.fetch]': 定义一个名为 'fetch' 的 MCP 服务器配置。'fetch' 将作为客户端连接时使用的 'server key'。
  • 'server_key = "fetch"': 重要,客户端需要配置此 'server_key' ('fetch') 来连接到 MCP Router 的 SSE 端点 '/sse/fetch' 或使用 API 接口。
  • 'command = "/path/to/your/mcp-server fetch --stdio"': 指定 后端实际 MCP 服务器 的启动命令。MCP Router 会在接收到客户端连接请求时,根据此命令启动或连接到后端 MCP 服务器。请根据你的实际 MCP 服务器程序和启动参数进行配置。

基本使用方法

  1. 启动 MCP Router (Proxy 或 API Server)。

  2. 配置 MCP 客户端:

    • SSE 客户端 (例如 Cursor): 在 MCP 客户端中,将 MCP 服务器地址 配置为 MCP Router 的 SSE 端点 URL。例如,如果你的 MCP Router 运行在本地 '8025' 端口,并且 'server_key' 配置为 'fetch',则配置 URL 为 'http://localhost:8025/sse/fetch'。客户端可能还需要配置 'mcp_server_commands.fetch' 或类似的参数来指定使用的 server key。
    • API 客户端: 对于需要使用 API 接口的场景 (例如,列出工具或调用工具),可以使用 HTTP 客户端 (如 'curl') 发送 POST 请求到 MCP Router 的 API 端点。例如,列出工具的请求:
      curl -X POST http://127.0.0.1:8027/v1/list-tools \
      -H 'Content-Type: application/json' \
      -H 'Authorization: Bearer fetch' # 使用 server_key 作为 Bearer Token 进行鉴权
      请注意,API 请求需要通过 'Authorization' Header 传递 'server_key' (例如 'fetch') 作为 Bearer Token 进行鉴权。
  3. 通过 MCP 客户端或 API 与后端 MCP 服务器交互。 MCP Router 会自动将客户端的请求路由到配置的后端 MCP 服务器,并将响应返回给客户端。

信息

分类

AI与计算