/ 目录 / 演练场 / mcphub
● 社区 samanhappy ⚡ 即开即用

mcphub

作者 samanhappy · samanhappy/mcphub

在一个端点后运行所有 MCP 服务器——将其分组、通过向量搜索智能路由、热交换配置而无需停机。

MCPHub 是一个 TypeScript 中心,在单个 HTTP 端点下挂载多个 MCP 服务器,支持按组、按服务器或通过向量搜索'智能'路由。支持 OAuth、社交登录、生产环境的 PostgreSQL 模式。推荐使用 Docker 部署。

为什么要用

核心特性

实时演示

实际使用效果

mcphub.replay ▶ 就绪
0/0

安装

选择你的客户端

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "mcphub": {
      "command": "npx",
      "args": [
        "-y",
        "mcphub"
      ],
      "_inferred": true
    }
  }
}

打开 Claude Desktop → Settings → Developer → Edit Config。保存后重启应用。

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "mcphub": {
      "command": "npx",
      "args": [
        "-y",
        "mcphub"
      ],
      "_inferred": true
    }
  }
}

Cursor 使用与 Claude Desktop 相同的 mcpServers 格式。项目级配置优先于全局。

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "mcphub": {
      "command": "npx",
      "args": [
        "-y",
        "mcphub"
      ],
      "_inferred": true
    }
  }
}

点击 Cline 侧栏中的 MCP Servers 图标,然后选 "Edit Configuration"。

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "mcphub": {
      "command": "npx",
      "args": [
        "-y",
        "mcphub"
      ],
      "_inferred": true
    }
  }
}

格式与 Claude Desktop 相同。重启 Windsurf 生效。

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "mcphub",
      "command": "npx",
      "args": [
        "-y",
        "mcphub"
      ]
    }
  ]
}

Continue 使用服务器对象数组,而非映射。

~/.config/zed/settings.json
{
  "context_servers": {
    "mcphub": {
      "command": {
        "path": "npx",
        "args": [
          "-y",
          "mcphub"
        ]
      }
    }
  }
}

加入 context_servers。Zed 保存后热重载。

claude mcp add mcphub -- npx -y mcphub

一行命令搞定。用 claude mcp list 验证,claude mcp remove 卸载。

使用场景

实战用法: mcphub

如何通过一个 URL 为团队暴露 20 个 MCP 服务器

👤 平台工程师、团队负责人 ⏱ ~30 min intermediate

何时使用: 工程师们不断复制粘贴本地配置,破坏彼此的设置。

前置条件
  • Docker 和一台有 DNS 名称的服务器 — 任何便宜的 VPS 都可以;使用 Caddy 或 nginx 提供 TLS
  • 列出服务器的 mcp_settings.json — 从 MCPHub 示例开始,为每个 MCP 添加一个条目
步骤
  1. 部署中心
    运行:docker run -p 3000:3000 -v $PWD/mcp_settings.json:/app/mcp_settings.json samanhappy/mcphub✓ 已复制
    → 管理员登录 URL + 日志中生成的密码
  2. 创建分组
    在管理员 UI 中,创建'dev'(github、filesystem、postgres)和'data'(postgres、bigquery)分组。✓ 已复制
    → 分组在 /mcp/dev 和 /mcp/data 处可见
  3. 分发 URL
    与团队分享 https://mcp.yourco.internal/mcp/dev;他们在客户端中将其添加为单个 HTTP MCP。✓ 已复制
    → 团队成员使用一行配置连接

结果: 单个可操作的端点替代了 20 个单机设置。

注意事项
  • 从 Docker 日志中泄露管理员密码 — 显式设置 ADMIN_PASSWORD 环境变量;首次登录时轮换
  • 将中心暴露到公网 — 将其放在 VPN 后面或每个用户需要 bearer token

如何让 $smart 自动为提示选择正确的 MCP

👤 运行过多工具而无法适应单个上下文的团队 ⏱ ~15 min advanced

何时使用: 你在多个 MCP 中有 200+ 个工具,超过了模型的工具预算。

步骤
  1. 启用 $smart 端点
    将客户端指向 https://hub.example.com/mcp/$smart 而不是特定服务器。✓ 已复制
    → 暴露单个元工具,根据意图路由
  2. 自然提示
    在 github.com/org/repo 中查找等待我的 PR,并在我的日历上将其作为 30 分钟的审查时段。✓ 已复制
    → 中心在幕后选择 github + google-calendar 工具

结果: 上下文中的工具更少,功能相同。

注意事项
  • 智能路由器在模糊提示上选择错误的 MCP — 保持按组端点可用作为回退

如何在不停机的情况下向中心添加新 MCP 服务器

👤 运维人员 ⏱ ~5 min beginner

何时使用: 新 MCP 刚刚发布,你希望今天就上线,而不会将所有人踢下线。

步骤
  1. 通过 UI 编辑 mcp_settings.json
    在 MCPHub 仪表板中,添加新的服务器条目并保存。✓ 已复制
    → 热重载通知,新工具出现
  2. 分配给分组
    将新服务器添加到'data'分组。✓ 已复制
    → /mcp/data 现在包含新工具

结果: 新 MCP 在一分钟内上线,无需客户端重新连接。

组合

与其他 MCP 搭配,撬动十倍杠杆

mcphub + toolhive

使用 ToolHive 对单个 MCP 进行容器化,使用 MCPHub 路由到它们

在 MCPHub 中的'dev'分组下注册我的 ToolHive 运行的 github MCP。✓ 已复制
mcphub + proxy

通过 HTTP 为中心暴露仅 stdio 的 MCP

使用 mcp-proxy 将我的本地 stdio MCP 桥接到 HTTP,以便 MCPHub 可以挂载它。✓ 已复制

工具

此 MCP 暴露的能力

工具输入参数何时调用成本
(meta) route-by-group HTTP path /mcp/{group} 常规使用——缩小影响范围 free
(meta) route-by-server /mcp/{server} 当你想要确切的一个服务器表面时 free
(meta) $smart semantic router /mcp/$smart 当你的上下文中工具过多时 1 vector search per call

成本与限制

运行它的成本

API 配额
中心未强制实施任何配额;下游 MCP 保持自己的配额
每次调用 Token 数
添加约 50 个工具元数据开销令牌
费用
免费(开源,Apache 2.0)
提示
使用组路由而不是 $smart,以获得确定的行为和零额外的向量搜索成本。

安全

权限、密钥、影响范围

最小权限: 每个用户的 Bearer token 对可信客户端的网络级限制
凭据存储: ADMIN_PASSWORD 环境变量;通过 mcp_settings.json 或秘密管理器的下游 MCP 秘密
数据出站: 中心仅进行代理——你的数据流向每个下游 MCP 发送的地方
切勿授予: 没有认证的公共暴露 开放互联网上的管理员 UI

故障排查

常见错误与修复

无法登录 / 密码未知

首次启动时检查容器日志中的生成密码或设置 ADMIN_PASSWORD。

验证: docker logs mcphub | grep -i password
新 MCP 出现但没有工具

下游 MCP 可能无法启动。点击服务器卡上的'Logs'。

智能路由器返回'无匹配工具'

从设置 > 索引工具重新索引向量存储。

OAuth 重定向不匹配

在你的 OAuth 提供者中注册确切的回调 URL(必须与中心的公共 URL 匹配)。

替代方案

mcphub 对比其他方案

替代方案何时用它替代权衡
Unla (MCP Gateway)你想要 YAML 驱动的 REST-to-MCP 转换加多租户基于 Go,不同的操作模式
ToolHive你想要每个 MCP 的容器级隔离专注于运行 MCP,较少关注路由/聚合
mcp-proxy你只需要传输桥接,而不是多服务器聚合单服务器;无 UI

更多

资源

📖 阅读 GitHub 上的官方 README

🐙 查看未解决的 issue

🔍 浏览全部 400+ MCP 服务器和 Skills