MCPJungle
将多个 MCP 服务器集中到一个自托管端点。
- Star 数
- ★ 1.3k
- 最近更新
- 2 个月前
- License
- MPL-2.0
- 主语言
- Go
- FA 评分
- 65/100 · 存在缺口
30 秒速览
- 运行形态
- 可在哪里用
- 通用 · 跨平台Codex · Claude.ai
- 费用
- 免费,无需付费服务
- 上手难度
- 中 · 需要几步配置
- 开始前需要
- 典型场景
- 个人开发者同时使用 Claude Desktop、Cursor 或 Codex,希望只维护一份 MCP 服务器配置。
- 不适合
- 需要 OAuth 授权流程的团队,目前只支持静态令牌或自定义请求头
- 希望用 Tool Group 管理提示词或原地修改分组的用户,分组只能删除后重建
- 不想维护数据库、容器与连接生命周期的个人用户
这个 Agent 能做什么,适合哪些场景?
MCPJungle 是一个自托管 MCP 网关和注册中心,将多个 MCP 服务器统一放在一个 Streamable HTTP 端点之后。它包含服务器、命令行客户端、HTTP API 和管理界面,可集中注册、发现、调用及启停工具和提示词。上游服务器可以使用 stdio 或 Streamable HTTP;网关按 <服务器名>__<工具名> 暴露工具,并可通过 Tool Groups 为不同客户端生成受限端点。个人可在 development 模式下使用 SQLite,本地或团队部署也可使用 Docker、PostgreSQL 和 enterprise 模式。企业模式增加客户端令牌、服务器级访问控制及默认启用的 OpenTelemetry 指标,但部分企业功能和 OAuth 仍有限制。
管理员通过 mcpjungle register 提交远程 MCP URL,或提交包含 command、args 和 env 的 stdio 配置;服务器连接上游并载入其工具与提示词。Claude Desktop、Cursor、Copilot、Codex 或自定义 Agent 随后连接 /mcp,通过 MCPJungle 发现和调用聚合后的能力。CLI 提供 list tools、usage、invoke、enable、disable 和 deregister 等操作;工具调用使用 <mcp-server-name>__<tool-name> 规范名称。Tool Groups 可按 included_tools、included_servers 和 excluded_tools 生成独立 MCP 端点。默认无状态连接会在每次调用后关闭上游连接;可选 stateful 会复用连接以降低 stdio 服务器的冷启动开销。系统状态存入 SQLite 或 PostgreSQL,指标可从 /metrics 获取。
- 个人开发者同时使用 Claude Desktop、Cursor 或 Codex,希望只维护一份 MCP 服务器配置。
- 平台团队需要向多个用户提供共享的 MCP 工具目录,并集中管理服务器注册与发现。
- 企业管理员需要为不同 MCP 客户端签发令牌,并限制每个客户端能够访问的服务器。
- 工具数量较多的团队希望用 Tool Groups 为特定客户端仅暴露经过挑选的工具。
- 运维团队希望自托管 MCP 基础设施,并通过 Prometheus 兼容的 OpenTelemetry 指标观察运行情况。
- 使用启动较慢的 stdio MCP 服务器的开发者,希望通过 stateful 连接减少重复启动延迟。
如何安装或部署这个 Agent?
最快的本地部署方式需要 Docker 和 Docker Compose;development 模式不要求 MCPJungle 访问令牌:
curl -O https://raw.githubusercontent.com/mcpjungle/MCPJungle/refs/heads/main/docker-compose.yaml
docker compose up -d默认 MCP 端点为 http://localhost:8080/mcp。也可通过 Homebrew 安装独立二进制并直接启动:
brew install mcpjungle/mcpjungle/mcpjungle
mcpjungle version
mcpjungle start默认直接启动时会在当前目录创建 mcpjungle.db;正式部署可设置 DATABASE_URL 使用 PostgreSQL。若 stdio 服务器依赖 npx 或 uvx,Docker 部署应使用 stdio 镜像变体;文档所给本地 compose 文件已默认采用该变体。
如何使用这个 Agent?
先注册一个远程 Streamable HTTP MCP 服务器;此示例本身未要求凭据:
mcpjungle register --name context7 --url https://mcp.context7.com/mcp可先从 CLI 验证聚合后的工具:
mcpjungle list tools
mcpjungle usage context7__get-library-docsClaude Desktop 的已记录连接方式需要 npx 和 mcp-remote:
{
"mcpServers": {
"mcpjungle": {
"command": "npx",
"args": [
"mcp-remote",
"http://localhost:8080/mcp",
"--allow-http"
]
}
}
}随后可在 Claude 中请求:
Use context7 to get the documentation for `/lodash/lodash`对于需要认证的远程服务器,注册时可传入 --bearer-token,或在 JSON 配置中设置 bearer_token、headers 及 ${VAR_NAME} 环境变量占位符。enterprise 模式还需先运行 mcpjungle init-server,再创建带允许服务器列表的 MCP 客户端,并让客户端发送生成的 Bearer token。
这个 Agent 有哪些优点和局限?
- 一个
/mcp端点聚合多个 stdio 和 Streamable HTTP 服务器,减少不同客户端间重复配置。 - Tool Groups 能按工具或服务器建立专用端点,并在最终结果中应用排除规则。
- 同时提供 SQLite 与 PostgreSQL、独立二进制与 Docker 部署路径,适合从个人环境扩展到共享服务。
- enterprise 模式提供 MCP 客户端令牌、服务器级 ACL 和 Prometheus 兼容的 OpenTelemetry 指标。
- 可选 stateful 会话可复用上游连接,缓解进程型 stdio 服务器的冷启动成本。
- 尚不支持 OAuth 流程;HTTP 上游目前主要依靠静态 Bearer token 或自定义请求头。
- Tool Groups 不支持提示词,也不能原地更新;修改配置必须删除后重建。
- 容器中的 stdio 服务器需要相应运行时;除
npx和uvx外的依赖可能要求自行制作镜像。 - 容器默认不能访问宿主文件系统;使用 filesystem MCP 服务器时必须显式挂载目录。
- stateful 连接会持续到服务器停止、服务器被注销或空闲超时,因此需要额外管理连接生命周期。
这个 Agent 与同类方案有什么区别?
与把每个 MCP 服务器分别配置到每个 AI 客户端相比,MCPJungle 把注册、发现、访问控制和观测集中到一个网关。代价是引入额外的自托管服务、数据库和网络跳转;若只有一个客户端和少量服务器,直接配置会更简单。
与相关度最高的同类 agent 并排比较关键指标。
| Agent | 源码审查 | 形态 / 费用 | Star | 最近更新 | 主语言 | 完整支持的平台 |
|---|---|---|---|---|---|---|
| MCPJungle 当前 | 65 · 存在缺口 | 自托管服务免费 | ★ 1.3k | 2 个月前 | Go | Codex · Claude.ai |
| Metorial:AI 代理的身份与访问控制层 | 50 · 缺口较多 | 代码库 / SDK免费版 + 付费版 | ★ 3.4k | 今天 | TypeScript | ChatGPT · Codex · Claude Code · Claude.ai |
| Jarvis Registry | 40 · 缺口较多 | 自托管服务免费 | ★ 3.7k | 今天 | Python | — |
| Archestra | 71 · 存在缺口 | 自托管服务免费版 + 付费版 | ★ 4.4k | 今天 | TypeScript | Codex · Claude Code · OpenAI API · Claude API |
FollowAgents 如何评估这个 Agent?
查看各维度的扣分理由
工具组、全局禁用以及容器默认不访问宿主文件系统体现了适度的最小权限设计,但新注册服务器的工具和提示默认全部启用。材料未显示调用具有外部副作用的工具前存在用户确认机制,因此该项为零。README较清楚地说明客户端、网关、上游MCP服务器、数据库和环境变量之间的数据流,但没有完整说明遥测字段、日志内容或数据保留策略。支持环境变量占位符、令牌字段及密码文件,算是基本敏感数据处理;不过未说明静态加密、日志脱敏、密钥轮换或令牌存储保护。go.mod固定了依赖版本,但没有依赖审计、漏洞扫描、更新策略或供应链控制证据。注册、调用及STDIO命令能够产生网络、进程和下游工具副作用,而确认和效果预览不足。禁用、注销及持久化状态说明提供有限恢复手段,但没有工具调用回滚或备份恢复流程。服务器命名和规范工具名可保留上游来源,模块路径也明确,但发布者身份未经验证,材料没有更完整的维护者归属。
文档提供健康检查、优雅关闭、状态连接生命周期以及环境变量缺失时的错误行为;同时建议通过stderr和服务器日志诊断故障。扣分主要来自README中服务端默认端口8080与CLI默认注册表地址8000之间的显著不一致,以及主要文档与折叠的旧版参考并存。二进制、Homebrew、容器和直接运行提供多种依赖获取路径,并明确stdio镜像仅内含npx和uvx、其他工具需自定义镜像;但没有离线或依赖故障恢复说明。失败信息有若干具体入口,却未展示系统化错误目录、结构化错误契约或面向用户的修复指导覆盖。
材料完整区分个人本地使用、团队共享基础设施、开发模式和企业模式,并覆盖Claude、Cursor、Copilot及自定义Agent,因此受众和场景充分。它明确界定stdio、Streamable HTTP和不成熟的SSE支持,说明无默认宿主文件访问、镜像依赖范围、无超时状态会话及数据库选择,能力边界较强。双下划线规范名、工具组以及启用/禁用提高了工具选择精度;但所有新工具默认启用,且未展示冲突消解、危险工具分类或调用级策略,因此未满分。Docker、宿主机、macOS、Kubernetes、SQLite、PostgreSQL及远程部署均有具体适配说明,环境覆盖充分。
README具有快速开始、目录、场景化章节和命令示例,但核心内容被标为旧版参考,最新运维细节又转移到未提供的外部文档,降低了仓库内信息架构的完整性。安装、验证、启动、连接和平台注意事项十分具体,安装说明可给满分。产品名大小写偶有不一致,enterprise由production改名,且8080与8000地址不一致,所以命名稳定性仅为适度。示例丰富并含预期调用过程,但没有真正的FAQ或完整故障排查矩阵。材料明确记录SSE不成熟、macOS未公证、容器文件访问、额外STDIO依赖和冷启动权衡,但未呈现集中且完整的限制清单。LICENSE完整提供MPL-2.0文本,与元数据一致。仅见Releases入口和一次模式改名说明,没有版本政策或变更日志。文档站、路线图、Discord及贡献入口暗示维护渠道,但未明确责任人、响应承诺或安全更新路径;发布者身份保持未知,不据此作额外推断。
统一端点、规范工具名、工具发现、提示支持、工具组和多客户端配置构成可直接使用的输出,示例也展示了从注册到调用的完整操作路径。相较于在每个客户端重复配置多个服务器,集中注册、访问控制与可观测性具有清晰的边际价值。文档承认冷启动、状态连接资源占用、stdio镜像体积及生产数据库选择等成本,但没有容量指标、性能数据、运维成本、迁移成本或安全代价量化,因此成本收益只算充分但不彻底。
多数操作性主张对应具体命令、配置结构、端点和go.mod依赖版本,具备一定可追溯性;但所给材料没有实现代码、测试或配置文件来静态核对访问控制、会话管理、观测性等核心声明。LICENSE与许可元数据、模块路径与仓库身份可以交叉印证,功能声明却主要来自单一README,跨来源佐证较弱。文档通常区分默认值、建议、限制和示例,并明确标注SSE不成熟等事实;不过集中化、安全性和生产适用性等宣传性结论缺少随附证据,事实与推断分离尚未达到完整程度。
- 源码中未见:执行前用户确认开启或自行加上执行前确认;先在沙箱或测试环境跑通,确认行为后再接入真实数据。
- 新注册服务器的全部工具和提示默认启用;共享部署前应使用工具组或显式禁用来缩小暴露面。
- 材料未显示高影响工具调用前的用户确认、效果预览或调用级回滚机制。
- README同时出现服务端默认端口8080和CLI默认注册表端口8000,部署时必须核实实际配置。
- 令牌、请求数据、遥测和日志的存储、脱敏、保留及加密策略未在所给文件中说明。
- 依赖虽固定版本,但没有提供漏洞扫描、供应链校验或安全更新流程的证据。
- STDIO服务器可启动任意配置命令,文件系统访问又取决于挂载范围;只应注册可信服务器并使用最小化挂载。
- 本评估仅基于所给README、LICENSE和go.mod,未执行软件,也未核验外部文档或发布产物。
最近版本
来自该项目 GitHub Releases 的最新发布记录,说明为上游原文摘录,未经本站改写或测试。
-
发布说明摘录
What's Changed * feat(server): add --host / MCPJUNGLE_BIND_HOST to choose the bind interface by @goodmai in https://github.com/mcpjungle/MCPJungle/pull/287 New Contributors * @goodmai made their first contribution in https://github.com/mcpjungle/MCPJungle/pull/287 Full Changelog: https://github.com/mcpjungle/MCPJungle/compare/0.4.5...0.4.6在 GitHub 查看 ↗ -
发布说明摘录
What's Changed * Allow configuring sqlite db file path by @duaraghav8 in https://github.com/mcpjungle/MCPJungle/pull/264 Full Changelog: https://github.com/mcpjungle/MCPJungle/compare/0.4.4...0.4.5在 GitHub 查看 ↗ -
发布说明摘录
What's Changed * Add Dashboard UI for development mode by @duaraghav8 in https://github.com/mcpjungle/MCPJungle/pull/256 * fix: tie proxy MCP server versions to mcpjungle server version by @mvanhorn in https://github.com/mcpjungle/MCPJungle/pull/251 * docs: add config examples of popular MCP servers by @duaraghav8 in https://github.com/mcpjungle/MCPJungle/pull/255 New Contributors * @mvanhorn made their first contribution in https://github.com/mcpjungle/MCPJungle/pull/251 Full Changelog: https://github.com/mcpjungle/MCPJungle/compare/0.4.3...0.4.4在 GitHub 查看 ↗
常见问题
本地使用是否必须部署 PostgreSQL?
./mcpjungle.db;更正式的部署可通过 DATABASE_URL 等配置连接 PostgreSQL。访问远程 MCP 服务器需要哪些凭据?
bearer_token 或自定义 HTTP headers;OAuth 流程目前尚未支持。development 与 enterprise 模式有什么区别?
能否在 Docker 中注册 filesystem 等 stdio 服务器?
/host;其他依赖可能需要自定义镜像。上游服务器启动很慢时怎么办?
"session_mode": "stateful" 以复用连接。默认 stateless 每次调用都会新建并关闭连接,隔离更简单,但可能产生冷启动延迟。