
mcp-context-forge
统一网关聚合 MCP/A2A/REST,让 Agent 调用更安全可控。
mcp-context-forge 是一个面向 AI Agent 与工具调用的统一网关、注册中心和代理服务。它位于 MCP、A2A 以及 REST/gRPC API 之前,把分散的模型上下文协议服务、智能体接口和传统 API 聚合到一个统一端点,解决多协议、多服务接入时发现难、鉴权乱、调用链路不透明的问题。核心能力包括集中式服务发现与注册、JWT 等认证中间件、访问护栏与策略控制、请求路由与代理、对 Agent 和工具调用的优化,以及插件扩展机制。项目基于 Python、FastAPI 和 asyncio 构建,适合需要把 MCP 工具、A2A 智能体和既有 API 统一治理的团队,作为 AI 基础设施层降低集成与运维成本。
项目数据
使用教程
环境要求
- Python 3.11 环境(官方 Dev Container 内置 Python 3.11)
- 必须提供 JWT_SECRET_KEY 与 AUTH_ENCRYPTION_SECRET,缺失则网关无法启动
- Docker 或 Podman,用于容器化部署(可选用 PostgreSQL + Redis 完整栈)
- 注意:arm64 目前不支持生产环境,Apple Silicon 需用 Rosetta 跑容器或改用 PyPI 安装
- 源码方式需要 make 与项目依赖(make venv install-dev)
安装与启动步骤
-
1创建虚拟环境
新建目录并创建隔离的 Python 虚拟环境,避免污染系统环境;Windows 用 ..venvScriptsActivate.ps1 激活。
mkdir mcpgateway && cd mcpgateway python3 -m venv .venv && source .venv/bin/activate -
2安装网关包
从 PyPI 安装 mcp-contextforge-gateway;README 也给出 uv 方式,可先 uv venv 再 uv pip install。
pip install --upgrade pip pip install mcp-contextforge-gateway -
3生成必要密钥
网关在任何环境(含本地开发)都要求这两个密钥,用官方脚本生成真实密钥后再启动。
python3 -m mcpgateway.scripts.init_secrets -
4准备 .env 文件
复制示例配置并用脚本把生成的真实密钥回填到 .env,占位值会导致启动失败。
cp .env.example .env python3 -m mcpgateway.scripts.init_secrets --patch-env .env -
5容器启动全栈
在仓库根目录用 Make 目标启动 PostgreSQL、Redis、3 个网关副本与 Nginx;需已存在含真实密钥的 .env。
make compose-up -
6源码方式运行
从源码安装开发依赖并构建 Admin UI,然后由 gunicorn 在 4444 端口提供网关服务。
make venv install-dev make serve -
7代理示例服务
用 mcpgateway.translate 把标准输入输出的 MCP 时间服务器暴露为 SSE 服务,端口 8003,可换成 podman。
python3 -m mcpgateway.translate --stdio "docker run --rm -i ghcr.io/ibm/fast-time-server:latest -transport=stdio" --expose-sse --port 8003
关键配置
| 配置项 | 必填 | 说明 | 示例 |
|---|---|---|---|
JWT_SECRET_KEY | 是 | JWT 签名密钥,所有环境都必须配置,否则网关拒绝启动 | 生成脚本产出的随机长字符串 |
AUTH_ENCRYPTION_SECRET | 是 | 认证信息加密密钥,与 JWT 密钥同为启动必填项 | 生成脚本产出的随机长字符串 |
DATABASE_URL | 否 | SQLAlchemy 连接串,默认使用本地 SQLite 文件 | postgresql+psycopg://user:password@localhost:5432/mcp |
HOST | 否 | 服务绑定地址,默认 0.0.0.0 | 0.0.0.0 |
MCPGATEWAY_UI_ENABLED | 否 | 是否启用 Admin UI 管理面板,默认开启 | true |
SECURE_COOKIES | 否 | HTTP(非 HTTPS)本地开发时需设为 false | false |
如何确认成功
compose 启动后 Nginx 监听 :8080;执行 make serve 时 gunicorn 监听 :4444 即表示网关已启动成功。
常见问题
Q:.env 缺失或用占位密钥会怎样?
A:网关会在启动时快速失败,通过 Pydantic 抛出校验错误。请先复制 .env.example 并用 init_secrets --patch-env 写入真实密钥。
Q:docker compose up -d 报 cryptography 或依赖解析错误?
A:这是本地构建缺少 CI 产出的封闭 wheel 集合所致,改用 GHCR 预构建镜像即可,compose 默认就会拉取预构建镜像。
Q:Apple Silicon 上容器跑不起来?
A:README 说明当前 arm64 不支持生产环境,可用 Rosetta 运行容器,或改用 PyPI 安装方式部署。
Q:跨网关 UAID 路由提示 UAID_ALLOWED_DOMAINS not configured?
A:在 .env 中把可信域名加入 UAID_ALLOWED_DOMAINS 白名单,并确保两端信任同一 JWT 签发方(共享密钥或联邦 SSO)。
注意事项
- JWT_SECRET_KEY 与 AUTH_ENCRYPTION_SECRET 在包括本地开发在内的所有环境都是必填项,网关不会以占位值启动。
- docker compose up -d 默认不本地构建镜像,而是使用 GHCR 预构建镜像,本地构建需要 CI 才能产出的 wheel 闭包。
- 当前 arm64 不支持生产环境,M1/M2 等 Apple Silicon 机器建议用 Rosetta 或 PyPI 安装。
- 完整配置包含 300+ 环境变量,按认证、缓存、SSO、可观测性等分类,详见官方 Configuration Reference。
核心亮点
- 统一 MCP、A2A、REST/gRPC 多协议入口,减少 Agent 对接多种服务的重复适配
- 内置注册中心与集中发现,服务上线后可被 Agent 动态感知,无需硬编码地址
- 提供 JWT 认证、护栏和插件机制,便于在网关层做权限、审计和策略扩展
不足之处
- 项目处于成长阶段,生产环境大规模验证案例和长期稳定性数据仍待积累
- 多协议聚合与插件体系带来一定部署和配置复杂度,小团队上手成本不低
适用场景
- 企业把内部多个 MCP 工具服务统一注册,供不同 Agent 按权限发现和调用
- AI 平台将 A2A 智能体与既有 REST API 通过一个网关暴露,统一鉴权和限流
- 需要审计和护栏的团队在网关层记录 Agent 工具调用链路并施加访问策略
替代项目
Kong、APISIX、Envoy
项目介绍
上一篇:Sentinel_Guard
下一篇:tiny-vllm
同类项目推荐
freebuff-proxy
开源
聚合多账号,一键接入 OpenAI 兼容 API,轻松管理会话。
OpenAI-compatible gateway for FreeBuff coding models. Token pool, session lifecycle,···
microduck
开源
用 Rust 造一只会走路的桌面小鸭,快速上手双足机器人。
A Tiny biped duck robot
soperator
开源
用 Kubernetes 原生方式运行 Slurm,简化 HPC 集群管理。
Run Slurm in Kubernetes
ollama
开源
一条命令本地跑起大模型,免费、私密、不卡顿
Get up and running with Kimi, GLM, MiniMax, DeepSeek, gpt-oss, Qwen, Gemma and other···