使用说明
项目简介
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 配置。
- 安全增强: 作为代理层,可以增加额外的安全策略,例如鉴权、限流等(当前仓库代码未体现,但架构上具备扩展性)。
安装步骤
-
下载仓库代码:
git clone https://github.com/chatmcp/mcprouter.git cd mcprouter -
配置服务器参数: 复制示例配置文件并根据需要修改 '.env.toml' 文件。
cp .env.example.toml .env.toml编辑 '.env.toml' 文件,配置 MCP 服务器的相关信息,例如启动命令等。
-
启动代理服务器 (Proxy Server):
go run main.go proxy这将启动 SSE 代理服务器,默认监听 '8025' 端口。
-
启动 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 服务器程序和启动参数进行配置。
基本使用方法
-
启动 MCP Router (Proxy 或 API Server)。
-
配置 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 端点。例如,列出工具的请求:
请注意,API 请求需要通过 'Authorization' Header 传递 'server_key' (例如 'fetch') 作为 Bearer Token 进行鉴权。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 进行鉴权
-
通过 MCP 客户端或 API 与后端 MCP 服务器交互。 MCP Router 会自动将客户端的请求路由到配置的后端 MCP 服务器,并将响应返回给客户端。
信息
分类
AI与计算