Architecture

Architecture

site icon
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 服务器,提供统一的工具访问接口。

核心功能

  1. 动态配置重新加载:支持在不重启主网关服务器的情况下更新托管服务器和集线器工具/服务。
  2. 生命周期管理:动态管理底层 MCP 服务器的启动、停止、监控和重启。
  3. 工具动态加载:动态加载/卸载/更新集线器原生工具。
  4. 配置服务:支持可配置的内部服务,能够响应配置变化。
  5. 工具命名空间:为托管服务器工具和集线器原生工具提供命名空间支持(serverId__toolNamehub__toolName)。
  6. WebSocket 连接:支持通过 WebSocket 连接 Gateway Clients。

适用场景

  1. 需要集中管理多个 MCP 服务器的场景。
  2. 需要动态更新工具和服务配置而不重启服务器的场景。
  3. 需要通过单一接口访问多个 MCP 服务器工具的场景。

工具列表

  1. Gateway Server (src/server.ts):核心集线器进程,负责管理托管服务器和集线器工具。
  2. Gateway Client (src/client/client.ts):代理服务器,LLM 客户端通过 STDIO 连接,并转发 MCP 请求到 Gateway Server。

常见问题解答

  1. ENOENT Error Starting gateway-client in LLM Client:确保 LLM 客户端的 MCP 设置中的 commandargsoptions.cwd 正确。
  2. Tool Name Validation Error:确保 mcp_hub_config.json 中的 serverIdhubTools 键只包含 a-zA-Z0-9_-
  3. Gateway Client Cannot Connect to Server:检查 Gateway Server 是否运行,wsPort 是否匹配,防火墙设置。
  4. Initial listTools Fails/Times Out in LLM Client:检查 Gateway Client 日志,确保连接完全建立。
  5. Dynamic Config Not Reloading:确保修改的是 dist/mcp_hub_config.json 文件,并检查文件监视器日志。

使用教程

使用依赖

  1. Node.js (v20+ 推荐)
  2. npm
  3. 需要管理的底层 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

开发

  1. 运行开发服务器npm run dev(使用 nodemon 自动重启 Gateway Server)。
  2. 代码检查/格式化npm run lint, npm run format
  3. 测试npm test

许可证

该项目遵循 GPL-3.0 开源许可条款,请参阅 GPL-3.0 了解完整条款。