IBM/mcp-context-forge · 上手攻略
- 仓库:IBM/mcp-context-forge
- 链接:https://github.com/IBM/mcp-context-forge
- 分类:AI Gateway / MCP 联邦网关 / 工具与代理路由
- 作者:spark
- 更新:2026-08-04
是什么
mcp-context-forge(README 自称 ContextForge)是一个由 IBM 开源的 AI Gateway / Registry / Proxy:它把任意数量的 MCP(Model Context Protocol)服务器、A2A(Agent-to-Agent)服务器、REST/gRPC 后端统一汇聚到一个端点后面,对 AI 客户端(Claude Code、Cursor、自研 agent 等)暴露一致的"工具列表 + 工具调用"接口,同时提供集中的鉴权、限流、观测、插件扩展能力。换句话说,它做的是"AI 工具/Agent 的 API Gateway"——把分散的 MCP server 和 REST API 虚拟化成一台"虚拟 MCP server"。
它本身就是一个完全合规的 MCP server,所以任何 MCP 兼容客户端都可以直接对接它;后端则可以是任意 MCP server、任意 REST/gRPC 端点,甚至 OpenAI / Anthropic 兼容的远程 Agent。
解决什么问题
没有这个网关之前,一个生产级 agent 团队会撞到三面墙:
- 工具爆炸:每个团队成员各自挂载十几个 MCP server,客户端配置重复、命名冲突、schema 不一致,审计和鉴权也无从下手。
- 协议碎片:MCP 是 2025 主流,但很多老服务只暴露 REST/gRPC;agent 想用它们,得手写 JSON Schema + 鉴权 + 重试。
- 观测与治理盲区:LLM 调用链路散落在 N 个 server,token 成本、失败率、p99 延迟没法统一打点;权限模型要么太松要么太死。
ContextForge 把"工具/Agent/API"都抽象成同一类注册资源,客户端只需对接一个 gateway,网关负责:
- 自动 REST/gRPC → MCP 适配(含 gRPC 反射自发现、JSON Schema 抽取、TOON 压缩)
- 联邦多 MCP/A2A server(支持 HTTP / JSON-RPC / WebSocket / SSE / stdio / streamable-HTTP)
- OAuth、JWT、Basic、用户级 token、Vault 凭据解析、SSRF/TLS 校验
- OpenTelemetry trace + metrics,可接 Phoenix / Jaeger / Zipkin / Tempo / DataDog / New Relic
- 插件层(40+ 插件)+ Admin UI(HTMX 2.0.3 + Alpine.js)
快速安装
官方推荐 Python ≥ 3.11;首次启动前必须生成
JWT_SECRET_KEY和AUTH_ENCRYPTION_SECRET,否则 gateway 直接拒绝启动。
最小可跑命令(uv / PyPI)
# 0) 准备:Python 3.11+ + uv(可选)
# 1) 拉取并初始化 .env
mkdir mcpgateway && cd mcpgateway
python3 -m venv .venv && source .venv/bin/activate
pip install --upgrade pip
pip install mcp-contextforge-gateway
curl -O https://raw.githubusercontent.com/IBM/mcp-context-forge/main/.env.example
cp .env.example .env
python3 -m mcpgateway.scripts.init_secrets # 写 .env.secrets
python3 -m mcpgateway.scripts.init_secrets --patch-env .env # 替换 __REPLACE_ME__
# 2) 启动 gateway(后台运行)
mcpgateway --host 0.0.0.0 --port 4444 &
# 3) 生成 bearer token 并冒烟测试
export JWT_SECRET_KEY=$(grep '^JWT_SECRET_KEY=' .env | cut -d= -f2)
export MCPGATEWAY_BEARER_TOKEN=$(python3 -m mcpgateway.utils.create_jwt_token \
--username admin@example.com --exp 10080 --secret "$JWT_SECRET_KEY")
curl -s -H "Authorization: Bearer $MCPGATEWAY_BEARER_TOKEN" \
http://127.0.0.1:4444/version | jq
Docker 一行启动也可:
docker run -d --name mcpgateway -p 4444:4444 \
-e JWT_SECRET_KEY="$(openssl rand -hex 32)" \
-e AUTH_ENCRYPTION_SECRET="$(openssl rand -hex 32)" \
-e MCPGATEWAY_UI_ENABLED=true \
-e MCPGATEWAY_ADMIN_API_ENABLED=true \
ghcr.io/ibm/mcp-context-forge:latest
硬件 / 依赖:Python 3.11+、SQLite(默认)/ PostgreSQL(生产)、可选 Redis 做多集群缓存与联邦。不需要 GPU,纯网络 + 数据库负载。
核心用法
1) 注册一个外部 MCP server / REST API 作为"虚拟 MCP server"
# 注册一个 stdio MCP server(如 mcp-server-git)
python3 -m mcpgateway.translate \
--stdio "uvx mcp-server-git" \
--expose-sse --expose-streamable-http --port 9000
# 把刚启动的 SSE 端点登记到 gateway
curl -s -X POST -H "Authorization: Bearer $MCPGATEWAY_BEARER_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"git","url":"http://localhost:9000/sse"}' \
http://localhost:4444/gateways
# 看一下工具清单
curl -s -H "Authorization: Bearer $MCPGATEWAY_BEARER_TOKEN" \
http://localhost:4444/tools | jq
2) 把若干工具打包成"虚拟 server"
# 从工具清单里挑出要暴露的工具 ID,组成虚拟 server
curl -s -X POST -H "Authorization: Bearer $MCPGATEWAY_BEARER_TOKEN" \
-H "Content-Type: application/json" \
-d '{"server":{"name":"time_server","description":"Fast time tools",
"associated_tools":["6018ca46d32a4ac6b4c054c13a1726a2"]}}' \
http://localhost:4444/servers | jq
之后,任何 MCP 客户端(Claude Code、Cursor、MCP Inspector 等)只需对接:
http://localhost:4444/servers/<UUID>/mcp
Header: Authorization: Bearer <token>。
3) A2A Agent 路由
Gateway 同时支持 OpenAI / Anthropic 兼容的远程 Agent 注册与调用,/a2a 路径下可直接转发,适合"agent 调用 agent"的多层编排。
4) 观测与限流
- 启用 OpenTelemetry 后,在
mcpgateway translate注入的 trace context 会贯穿到下游 MCP server,可在 Phoenix UI 直接看 LLM 调用成本、token 用量、错误率。 - 限流、鉴权、重试、SSRF/TLS 校验默认开启,1.0.6 起 header key 校验更严格(空白字符会被 trim,非法 key 在配置时直接 422)。
典型适用场景
- 企业内部 AI 工具目录:HR、IT、数据团队各自维护 MCP server,统一在 gateway 注册,对外只暴露一个端点。
- Agent 编排中台:把若干外部 agent(OpenAI/Anthropic/自研)用 A2A 注册到网关,网关做调度、限流、token 计费。
- REST 老系统接入 LLM:不想写完整 MCP server 的老 REST 服务,通过
mcpgateway.translate+ REST-to-MCP 适配器,几分钟变 MCP 工具。 - 多集群 / 多 region 部署:Redis 联邦缓存,K8s 上水平扩展,Admin UI 支持 air-gapped 部署,适合金融/政企内网。
- 审计与合规:统一鉴权、用户级 token、Vault 凭据解析、SSRF/TLS 校验,所有调用落 OpenTelemetry,便于做合规审计。
坑与注意
- 首次启动必生成两个 secret:不跑
init_secrets就启动,会直接退出。生产部署一定要把这两个值放进 Vault / k8s Secret。 - NPM 安装方式已废弃(README 顶部明确标注);MCP 客户端侧要的是 gateway URL + bearer token,不要直接
pip install mcp然后用 stdio 拉它,要走 HTTP/SSE/streamable-HTTP。 - 配置变更 header key 校验收紧:1.0.6 起,
X Api Key这种带空格的 header key 直接 422;老的 gateway 配置升级前要先批量修正。 - Admin UI 启用需显式开关:
MCPGATEWAY_UI_ENABLED=true与MCPGATEWAY_ADMIN_API_ENABLED=true默认未必开,远程管理要主动设。 - SQLite 仅适合单实例 / 开发:生产建议 PostgreSQL + Redis,联邦与缓存才能水平扩展。
- README 自身有断章:750KB 抓取截断,部分示例(如
init_secrets --patch-env)是从 PyPI 文档拼出来的,命令路径以仓库 main 分支为准,本文不另行冒烟——若你跑起来报错,以[issue 2503 5-Minute Setup](https://github.com/IBM/mcp-context-forge/issues/2503)为准。 - 基准数字缺失:README 没给"每秒工具调用多少""p99 延迟""并发上限",这是 LLM 平台常见的"功能罗列 / 缺 benchmark"病,本文不杜撰。
与同类对比
| 项目 | 定位 | 协议覆盖 | 鉴权/观测 | License |
|---|---|---|---|---|
| IBM/mcp-context-forge | 企业级 AI Gateway + Registry | MCP / A2A / REST / gRPC | OAuth/JWT/Vault + OTel(Phoenix/Jaeger) | Apache 2.0 |
| Portkey Gateway | LLM API Gateway(多模型路由) | OpenAI/Anthropic 兼容 | Key 鉴权 + 日志 | Apache 2.0 |
| LiteLLM Proxy | LLM 统一接口层 | 多 provider | 简单鉴权 + 日志 | MIT |
| MCP Router / MCPHub 等社区项目 | 轻量 MCP 联邦 | MCP 为主 | 视项目而异 | 多为 MIT |
差异化:ContextForge 不是 LLM 路由代理(那是 LiteLLM / Portkey 的活),它聚焦"工具/Agent 的联邦与治理",且把 gRPC-to-MCP、TOON 压缩、SSRF/TLS 校验这些企业级能力作为一等公民——同等量级的开源项目目前少有能打的。
一句话推荐结论
"AI 工具/Agent 的 API Gateway"——如果你的 agent 要调用 ≥3 个 MCP server 或需要把 REST/gRPC 老服务接入 LLM,ContextForge 是当下 Apache 2.0 阵营里功能最全的可选项;若只是要"统一调多家 LLM",用 LiteLLM / Portkey 更轻。
源链接 / 引用
- README main:https://github.com/IBM/mcp-context-forge/blob/main/README.md
- 文档站:https://ibm.github.io/mcp-context-forge/
- PyPI:https://pypi.org/project/mcp-contextforge-gateway/
- Release 1.0.6(2026-07-22,OAuth Token Exchange / Vault / MCP Apps):https://github.com/IBM/mcp-context-forge/releases/tag/1.0.6
- 5-Minute Setup issue:https://github.com/IBM/mcp-context-forge/issues/2503
- 关键 PR:#5224(OAuth Token Exchange)、#5651(Per-User Vault)、#5079(MCP Apps)、#5314(header key 校验)