
Architecture

2025.03.31
1
TypeScript中央网关服务MCP 服务器管理开发效率
MCP Server Hub / Gateway 是一个中央网关服务,用于管理多个 MCP(Model Context Protocol)服务器并暴露集线器原生工具。它通过动态配置重新加载功能,允许在不重启主网关服务器的情况下更新托管服务器和集线器工具/服务。LLM 客户端只需连接到该项目的 `gateway-client` 端点,即可通过单一接口访问所有托管 MCP 服务器和集线器本身的工具。
View on GitHub
Overview
基本能力
产品定位
MCP Server Hub / Gateway 是一个中央网关服务,用于集中管理和代理多个 MCP 服务器,提供统一的工具访问接口。
核心功能
- 动态配置重新加载:支持在不重启主网关服务器的情况下更新托管服务器和集线器工具/服务。
- 生命周期管理:动态管理底层 MCP 服务器的启动、停止、监控和重启。
- 工具动态加载:动态加载/卸载/更新集线器原生工具。
- 配置服务:支持可配置的内部服务,能够响应配置变化。
- 工具命名空间:为托管服务器工具和集线器原生工具提供命名空间支持(
serverId__toolName
和hub__toolName
)。 - WebSocket 连接:支持通过 WebSocket 连接 Gateway Clients。
适用场景
- 需要集中管理多个 MCP 服务器的场景。
- 需要动态更新工具和服务配置而不重启服务器的场景。
- 需要通过单一接口访问多个 MCP 服务器工具的场景。
工具列表
- Gateway Server (
src/server.ts
):核心集线器进程,负责管理托管服务器和集线器工具。 - Gateway Client (
src/client/client.ts
):代理服务器,LLM 客户端通过 STDIO 连接,并转发 MCP 请求到 Gateway Server。
常见问题解答
- ENOENT Error Starting
gateway-client
in LLM Client:确保 LLM 客户端的 MCP 设置中的command
、args
和options.cwd
正确。 - Tool Name Validation Error:确保
mcp_hub_config.json
中的serverId
和hubTools
键只包含a-zA-Z0-9_-
。 - Gateway Client Cannot Connect to Server:检查 Gateway Server 是否运行,
wsPort
是否匹配,防火墙设置。 - Initial
listTools
Fails/Times Out in LLM Client:检查 Gateway Client 日志,确保连接完全建立。 - Dynamic Config Not Reloading:确保修改的是
dist/mcp_hub_config.json
文件,并检查文件监视器日志。
使用教程
使用依赖
- Node.js (v20+ 推荐)
- npm
- 需要管理的底层 MCP 服务器已安装/可访问。
安装教程
# 克隆仓库(如果尚未克隆)
# git clone ...
# cd mcp-server-hub-server
# 安装依赖
npm install
# 构建 Gateway Server 和 Client 代码
# 这会编译 TypeScript 并将 mcp_hub_config.json 复制到 dist/
npm run build
调试方式
# 确保已构建项目
npm run build
# 启动服务器
npm start
开发
- 运行开发服务器:
npm run dev
(使用 nodemon 自动重启 Gateway Server)。 - 代码检查/格式化:
npm run lint
,npm run format
。 - 测试:
npm test
。