MCP Gateway
使用说明(Markdown 格式)
-
项目简介
- MCP Gateway 作为中间层网关,将多个 MCP 服务器的工具、资源、提示等上下文信息整合在一个入口对外提供给下游 MCP 客户端使用。它既充当 MCP 客户端,连接上游 MCP 服务器,又作为 MCP 服务器,对下游客户端暴露统一的查询、描述、调用接口。
-
主要功能点
- 连接上游 MCP 服务器:通过本地进程(stdio)或 HTTP/WebSocket 的方式与上游 MCP 服务器建立连接。
- 统一工具目录与搜索:聚合多个服务的工具描述,但通过高效的“搜索描述”机制,避免向客户端暴露大量重复的工具模式,而是提供相关性排序的工具入口。
- 工具描述与调用:支持 gateway.describe、gateway.invoke 和 gateway.invoke_async 等操作,允许下游客户端按需调用外部工具。
- 资源与提示渲染:托管资源(Resources)与 Prompt 模板(Prompts)的读取、描述和渲染,便于 LLM/client 翻阅与渲染提示。
- 多传输与会话管理:支持多种传输协议(如 stdin/stdio、HTTP、WebSocket)并进行会话管理与能力声明,提升安全性与可扩展性。
-
安装步骤
- 确认环境:需要 Node.js 或 Bun 等运行环境,推荐使用 Bun 作为运行工具。
- 获取发行版本:从 MCP Gateway 的发行物中获取可运行的网关程序。
- 启动网关:使用网关提供的启动命令,在本地或服务器上启动网关进程。
- 配置上游 MCP 服务器:在网关的配置文件中添加一个或多个上游 MCP 服务器,指定传输方式和连接参数。
- 连接下游 MCP 客户端:将下游 MCP 客户端指向网关暴露的 MCP 端点进行交互。
-
服务器配置(示例配置信息,按 JSON 格式描述,不包含具体代码) { "gateway": { "serverName": "gateway", "type": "local", "command": ["bunx", "@eznix/mcp-gateway@latest"], "args": [] }, "upstream_http": { "serverName": "example-http-upstream", "type": "remote", "url": "https://mcp.example.org", "enabled": true }, "upstream_ws": { "serverName": "example-ws-upstream", "type": "remote", "url": "wss://mcp-ws.example.org/ws", "enabled": true } } 注解:
- gateway.serverName:网关自身在配置中的唯一名称,便于在多服务器环境中标识和定位。
- gateway.type:表示网关进程运行的形式,local 表示本地启动的网关进程。
- gateway.command/ gateway.args:启动网关所需的命令与参数,MCP 客户端需要仅了解网关的启动信息以建立连接。
- upstream_http/upstream_ws:上游 MCP 服务器的配置信息,包含连接的 URL 与是否启用。
- enabled:是否启用该上游服务器。 注意:MCP 客户端需要信息仅包含启动网关的命令和参数,以及可选的上游服务器信息(URL、启用状态等)来建立连接;客户端本身不需要内部实现细节。
-
基本使用方法
- 启动网关:按照配置执行网关启动命令,使网关进程在指定端口监听 MCP 请求。
- 配置上游服务器:确保上游 MCP 服务器可访问,并在网关配置中启用它们(HTTP/WS)。
- 使用下游客户端:让下游 MCP 客户端连接网关的 MCP 端点,通过 gateway.search、gateway.describe、gateway.invoke 等接口进行交互。
- 监控与运维:关注网关的健康状态、日志输出,以及与上游服务器的连接情况,必要时调整传输协议或并发参数以提升稳定性。
-
注意事项
- 该网关旨在提供对上游 MCP 资源的统一访问入口,实际的工具执行仍在上游 MCP 服务器上完成,网关仅聚合、路由和描述工具。
- 配置文件应当妥善保护,避免暴露上游服务器的敏感信息与内部工具描述。