Skip to main content
Glama

MCP Hub

聚合多个 MCP 服务器,统一暴露为一个标准 MCP 接口,供其他 Agent(如 Claude Code、Cursor 等)集成。

功能特性

  • 多 MCP 聚合:连接多个下游 MCP 服务器,将所有工具统一暴露

  • 工具命名空间:自动前缀隔离,server_id_tool_name 格式

  • 双传输支持:同时支持 stdio 和 HTTP (Streamable HTTP) 两种传输方式

  • 热管理:注册/启用/禁用下游服务器后自动热重载,无需重启网关

  • 管理 API:RESTful HTTP API 管理所有下游服务器

  • SQLite 持久化:服务器配置持久存储,零外部依赖

  • 自省工具:内置 gateway__list_serversgateway__list_all_tools

Related MCP server: Agent Aggregator

安装

前提条件

  • Python >= 3.10

  • Node.js >= 16(如需运行 npm MCP 包)

安装步骤

# 克隆或进入项目目录
cd mcp_demo

# 安装(开发模式)
pip install -e .

依赖

fastmcp >= 2.0      # MCP 框架
pydantic >= 2.0     # 数据模型校验
typer               # CLI 命令行
uvicorn             # HTTP 服务器
starlette           # HTTP 管理 API
aiosqlite           # SQLite 存储
httpx               # HTTP 客户端

快速开始

1. 注册下游 MCP 服务器

# 注册本地 Python MCP 服务器
mcp-gateway register \
  --server-id math \
  --display-name "Math Server" \
  --command python \
  --args "examples/downstream_servers/math_server.py"

# 注册天气服务器
mcp-gateway register \
  --server-id weather \
  --display-name "Weather Server" \
  --command python \
  --args "examples/downstream_servers/weather_server.py"

# 注册 bing-search(Windows 需要 cmd /c 包装)
mcp-gateway register \
  --server-id bing \
  --display-name "Bing Search" \
  --command cmd \
  --args "/c,npx,-y,bing-cn-mcp"

# 注册 HTTP 类型的 MCP 服务器
mcp-gateway register \
  --server-id remote-api \
  --display-name "Remote API" \
  --transport http \
  --url "https://api.example.com/mcp"

2. 查看已注册的服务器

# 基本列表
mcp-gateway list

# 显示连接状态和工具
mcp-gateway list --status --tools

# JSON 格式输出
mcp-gateway list --json

3. 启动网关

# stdio 模式(供 Claude Code 等 Agent 以子进程方式集成)
mcp-gateway serve

# HTTP 模式(供远程 Agent 连接)
mcp-gateway serve --transport http --port 8000

# 完整参数
mcp-gateway serve \
  --transport http \
  --host 0.0.0.0 \
  --port 8000 \
  --path /mcp \
  --management-port 9000 \
  --store gateway.db

CLI 命令参考

命令

说明

mcp-gateway serve

启动网关服务器

mcp-gateway register

注册新的下游 MCP 服务器(自动通知运行中网关热重载)

mcp-gateway list

列出所有已注册的服务器

mcp-gateway enable <id>

启用服务器(自动通知运行中网关热重载)

mcp-gateway disable <id>

禁用服务器(自动通知运行中网关热重载)

mcp-gateway remove <id>

永久移除服务器(自动通知运行中网关热重载)

mcp-gateway health <id>

检查服务器健康状态

mcp-gateway reload

手动重载配置提示

mcp-gateway export-config

导出服务器配置

mcp-gateway import-config <file>

从 JSON 文件导入配置(自动通知运行中网关热重载)

serve 参数

参数

默认值

说明

--transport, -t

stdio

传输类型:stdiohttp

--host

127.0.0.1

HTTP 监听地址

--port, -p

8000

HTTP 端口

--path

/mcp

MCP 协议的 HTTP 路径

--management-port

9000

管理 API 端口

--no-management

禁用管理 API

--store

gateway_config.db

SQLite 数据库路径

--name

MCP Gateway

网关名称

--log-level

INFO

日志级别

register 参数

参数

说明

--server-id

唯一服务器标识(必填)

--display-name

可读名称

--transport

stdio(默认)或 http

--command

stdio 模式的启动命令

--args

逗号分隔的命令参数

--url

HTTP 模式的服务器 URL

--management-port

管理 API 端口,用于自动热重载(默认 9000)

--no-auto-discover

注册后不立即连接

--tags

逗号分隔的标签

--store

存储路径

注意registerenabledisableremoveimport-config 命令执行后会自动通知运行中的网关热重载(通过管理 API)。如果网关未运行,重载请求会静默失败,不影响命令执行。

HTTP 管理 API

管理 API 运行在独立端口(默认 9000)。

端点列表

GET    /api/v1/servers                      列出所有服务器
POST   /api/v1/servers                      注册新服务器
GET    /api/v1/servers/{server_id}          获取服务器详情
PUT    /api/v1/servers/{server_id}          更新服务器配置
DELETE /api/v1/servers/{server_id}          删除服务器
POST   /api/v1/servers/{server_id}/enable   启用服务器
POST   /api/v1/servers/{server_id}/disable  禁用服务器
GET    /api/v1/servers/{server_id}/health   健康检查
GET    /api/v1/tools                        查看所有聚合工具
GET    /api/v1/gateway/status               网关状态概览
POST   /api/v1/gateway/reload               热重载配置
GET    /api/v1/gateway/export               导出配置
POST   /api/v1/gateway/import               导入配置

使用示例

# 注册服务器
curl -X POST http://localhost:9000/api/v1/servers \
  -H "Content-Type: application/json" \
  -d '{
    "server_id": "weather",
    "display_name": "Weather Service",
    "transport": "stdio",
    "stdio_config": {"command": "python", "args": ["weather_server.py"]}
  }'

# 查看所有服务器
curl http://localhost:9000/api/v1/servers

# 查看聚合工具
curl http://localhost:9000/api/v1/tools

# 查看网关状态
curl http://localhost:9000/api/v1/gateway/status

# 启用/禁用
curl -X POST http://localhost:9000/api/v1/servers/weather/enable
curl -X POST http://localhost:9000/api/v1/servers/weather/disable

# 热重载
curl -X POST http://localhost:9000/api/v1/gateway/reload

供其他 Agent 集成

Claude Code 集成

在项目根目录创建 .mcp.json

{
  "mcpServers": {
    "gateway": {
      "command": "python",
      "args": ["-m", "mcp_gateway", "serve", "--transport", "stdio"]
    }
  }
}

或使用全局 CLI 命令:

claude mcp add gateway -s project -- python -m mcp_gateway serve --transport stdio

自定义 Agent 集成

# 通过 stdio
from fastmcp import Client
from fastmcp.client.transports import StdioTransport

async with Client(StdioTransport(
    command="python",
    args=["-m", "mcp_gateway", "serve", "--transport", "stdio"],
)) as client:
    # 列出所有工具(含命名空间前缀)
    tools = await client.list_tools()
    for tool in tools:
        print(tool.name)  # 如: math__add, weather__get_forecast

    # 调用代理工具
    result = await client.call_tool("math__add", {"a": 3, "b": 5})
    print(result)
# 通过 HTTP
from fastmcp import Client

async with Client("http://localhost:8000/mcp") as client:
    tools = await client.list_tools()
    result = await client.call_tool("weather__get_current", {"city": "Beijing"})
    print(result)

远程 Agent 集成

作为标准 MCP HTTP 服务器,任何支持 MCP Streamable HTTP 协议的 Agent 都可以连接:

{
  "mcpServers": {
    "gateway": {
      "type": "http",
      "url": "http://gateway-host:8000/mcp"
    }
  }
}

工具命名规则

所有下游服务器的工具自动添加 server_id_ 前缀:

下游服务器

原始工具名

网关中的名称

math

add

math_add

math

multiply

math_multiply

weather

get_forecast

weather_get_forecast

bing

bing_search

bing_bing_search

bing

crawl_webpage

bing_crawl_webpage

网关自省工具使用双下划线 gateway__ 前缀(不被 mount 改写):

工具名

功能

gateway__list_servers

列出所有服务器及连接状态

gateway__list_all_tools

列出所有聚合的工具

项目架构

外部 Agent (Claude Code / Cursor / 其他)
         │
    ┌────┴────┐
   stdio     HTTP (streamable-http)
    └────┬────┘
         ▼
  ┌──────────────────┐
  │  GatewayServer    │  ← 统一的 FastMCP 实例
  │  (FastMCP)        │
  └────┬────┬─────────┘
       │    │
  ┌────▼─┐ ┌▼────────────┐
  │Proxy  │ │Management   │
  │Manager│ │API          │
  └──┬──┬─┘ └─────────────┘
     │  │
 ┌───▼┐ ┌▼────┐
 │MCP A│ │MCP B│  ...
 └────┘ └─────┘

配置导入/导出

# 导出当前配置
mcp-gateway export-config --output servers.json

# 从 JSON 文件导入
mcp-gateway import-config servers.json

# 示例配置文件格式 (examples/config.yaml)

示例配置 (examples/config.yaml):

{
  "mcpServers": {
    "math": {
      "command": "python",
      "args": ["examples/downstream_servers/math_server.py"]
    },
    "weather": {
      "command": "python",
      "args": ["examples/downstream_servers/weather_server.py"]
    },
    "bing-search": {
      "command": "cmd",
      "args": ["/c", "npx", "-y", "bing-cn-mcp"]
    }
  }
}

注意事项

  1. Windows stdio:Windows 下注册 npm 类 MCP 需使用 cmd 命令:--command cmd --args "/c,npx,-y,<package-name>"

  2. 网络环境:HTTP 类型的下游服务器需要可访问的网络连接

  3. 端口冲突:默认 MCP 端口 8000,管理端口 9000,确保未被占用

  4. 无 unmount:FastMCP 暂不支持运行时 unmount,禁用/删除服务器后建议重启网关获得干净状态

  5. 单机设计:SQLite 适合单机部署,如需集群可通过 AbstractStore 接口扩展 PostgreSQL 等

F
license - not found
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • MCP server exposing the Backtest360 engine API as tools for AI agents.

  • MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.

  • Real-time chat hub for AI agents — Claude Code, Cursor, Cline, Codex over MCP or REST.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Cai-Chang/MCP-Hub'

If you have feedback or need assistance with the MCP directory API, please join our Discord server