关于 Mcpjungle Mcp Gateway
MCPJungle 是一个可自托管的 MCP 网关,让开发者和团队把多个 MCP 服务注册到一个统一端点,再由 Claude、Cursor 等客户端连接。它既可用于个人本地环境,也可作为团队共享基础设施,提供集中发现、访问控制和可观测性。
主要功能
- 01在统一端点后接入多个 MCP 服务
- 02集中注册和管理 MCP 服务
- 03统一发现工具、提示词和资源
- 04工具分组,按客户端控制可见工具
- 05支持 OpenTelemetry 可观测性
适用场景
- 01让 Claude Desktop 通过单一端点访问多个 MCP 工具
- 02团队共享 MCP 服务并集中管理访问权限
- 03在本地快速复现 MCP 配置
MCP 相关
MCPJungle 本身是 MCP 网关,对外以 streamable HTTP 暴露 /mcp 端点,并聚合已注册的上游 MCP 服务的工具、提示词和资源。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
MCPJungle
通过一个端点运行所有 MCP 服务
MCPJungle 是一款可自托管的 MCP 网关,适用于希望管理多个 MCP 服务、避免客户端配置分散、设置重复或访问控制不一致的开发者和团队。
你可以在本地使用它,让个人 MCP 配置保持整洁;也可以将它作为共享基础设施运行,为团队提供集中式发现、访问控制和可观测性。

无需将每个 MCP 服务分别接入每个 AI 客户端,只需在 MCPJungle 中注册一次服务,即可让 Claude、Cursor、Codex 或你自己的 Agent 连接到单个 MCP 端点。
为什么选择 MCPJungle?
MCP 功能强大,但管理多个 MCP 服务很快就会变得混乱。
没有网关时:
- 🔌 每个客户端都需要单独配置 MCP 服务
- 🧩 工具、提示词和资源分散在不同的服务中
- 🔐 访问控制重复配置或完全缺失
- 👥 团队无法共享查看可用 MCP 工具
- 🛠️ 本地配置难以复现
MCPJungle 为你提供一个统一的控制点:
- 🌐 为 Claude、Cursor、Copilot 和自定义 Agent 提供一个 MCP 端点
- 🗂️ 在一个地方注册和管理 MCP 服务
- 🔎 统一发现工具、提示词和资源
- 🎛️ 可选的工具组,仅向客户端开放其应查看的工具
- 📊 为共享部署提供简单的访问控制和可观测性接口
从本地配置开始,需要时再扩展为团队共享网关。

文档
Mcpjungle 文档已迁至新地址:https://docs.mcpjungle.com。
获取最新指南、参考资料和运维详情时,请优先查看文档网站,而非此 README。
你的 AI 客户端也可以通过 MCP 服务 https://docs.mcpjungle.com/mcp 访问文档!
快速入门
本快速入门指南将介绍如何:
- 使用
docker compose在本地启动 mcpjungle 服务 - 在 mcpjungle 中添加 MCP 服务
- 将 Claude Desktop 连接到 mcpjungle,以使用 MCP 工具
启动服务
获取 docker-compose.yaml 并启动 mcpjungle 服务:
curl -O https://raw.githubusercontent.com/mcpjungle/MCPJungle/refs/heads/main/docker-compose.yaml
docker compose up -d
默认情况下,这会在 http://localhost:8080/mcp 暴露 mcpjungle 的可流式 HTTP MCP 服务。
添加 MCP 服务
- 在本地计算机上通过 brew 或直接从发布页面下载
mcpjungleCLI。
brew install mcpjungle/mcpjungle/mcpjungle
- 使用 CLI 将 context7 MCP 服务添加到 mcpjungle:
mcpjungle register --name context7 --url https://mcp.context7.com/mcp
你应该会看到类似以下内容的输出:

连接到 mcpjungle
在 Claude Desktop 中,添加 mcpjungle MCP 服务的配置:
{
"mcpServers": {
"mcpjungle": {
"command": "npx",
"args": [
"mcp-remote",
"http://localhost:8080/mcp",
"--allow-http"
]
}
}
}
添加配置后,尝试向 claude 提出一个简单的问题:
Use context7 to get the documentation for `/lodash/lodash`
随后,Claude 会尝试通过 MCPJungle 调用 context7__get-library-docs 工具,该工具会返回 Lodash 库的文档。
现在,你已经拥有一个可用的 MCP 配置,并且只有一个统一的端点!
接下来,请查阅完整文档:docs.mcpjungle.com,以及公开路线图。
旧版 README 参考
📋 目录
安装
MCPJungle 以独立二进制文件的形式发布。
你可以从 Releases 页面下载,也可以使用 Homebrew 安装:
brew install mcpjungle/mcpjungle/mcpjungle
运行以下命令,验证安装:
mcpjungle version
重要
在 MacOS 上,你必须使用 Homebrew,因为编译后的二进制文件尚未通过公证。
MCPJungle 提供了一个 Docker 镜像,可用于运行注册表服务(稍后将详细介绍)。
docker pull ghcr.io/mcpjungle/mcpjungle
使用
MCPJungle 采用客户端-服务端架构,其二进制文件可用于运行服务端和客户端。
服务端
MCPJungle 服务端负责管理其中注册的所有 MCP 服务,并提供统一的 MCP 网关,供 AI Agent 发现并调用这些已注册服务提供的工具。
网关通过可流式传输的 HTTP 传输协议运行,可通过 /mcp 端点访问。
在 Docker 中运行
在本地运行 MCPJungle 服务时,推荐使用 docker compose:
# docker-compose.yaml is optimized for individuals running mcpjungle on their local machines for personal use.
# mcpjungle will run in `development` mode by default.
curl -O https://raw.githubusercontent.com/mcpjungle/MCPJungle/refs/heads/main/docker-compose.yaml
docker compose up -d
# docker-compose.prod.yaml is optimized for orgs deploying mcpjungle on a remote server for multiple users.
# mcpjungle will run in `enterprise` mode by default, which enables enterprise features.
curl -O https://raw.githubusercontent.com/mcpjungle/MCPJungle/refs/heads/main/docker-compose.prod.yaml
docker compose -f docker-compose.prod.yaml up -d
说明
enterprise模式以前称为production模式。 为了更清晰,现已重命名此模式。其他一切保持不变。
这将启动 MCPJungle 服务,并同时启动一个持久化的 Postgres 数据库容器。
你可以快速确认服务是否正在运行:
curl http://localhost:8080/health
如果你计划注册依赖 npx 或 uvx 的 stdio 型 MCP 服务,请改用 mcpjungle 的 stdio 标签 Docker 镜像。
MCPJUNGLE_IMAGE_TAG=latest-stdio docker compose up -d
说明
如果你使用的是
docker-compose.yaml,默认镜像标签已经是此标签。 只有在使用docker-compose.prod.yaml时,才需要指定 stdio 镜像标签。
此镜像明显更大。但如果你依赖 stdio 型 MCP 服务,在本地运行时使用此镜像会非常方便,也值得推荐。
例如,如果你只想注册 context7 和 deepwiki 这类远程 MCP 服务,可以使用标准(精简版)镜像。
但如果你还想使用 filesystem、time、github 等 stdio 型服务,则应改用带 stdio 标签的镜像。
说明
如果你的 stdio 服务依赖
npx或uvx之外的工具,则必须创建自定义 Docker 镜像,在其中加入这些依赖和 mcpjungle 二进制文件。
生产部署
默认的 MCPJungle Docker 镜像非常轻量——只包含一个最精简的基础镜像和 mcpjungle 二进制文件。
因此,它适用于生产部署,也值得推荐用于生产部署。
对于数据库,我们建议你单独部署一个 Postgres DB 集群,并将其端点提供给 mcpjungle(参见下文的数据库部分)。
你可以查看标准 Docker 镜像和 stdio Docker 镜像的定义。
直接在主机上运行
你也可以使用二进制文件直接在主机上运行服务:
mcpjungle start
这将启动主注册服务和 MCP 网关,默认可通过端口 8080 访问。
关闭
mcpjungle 服务必须正常关闭,以确保妥善完成清理工作。
停止服务进程的推荐方式是向其发送 SIGTERM 信号。
数据库
mcpjungle 服务依赖数据库,默认会在当前工作目录中创建一个 SQLite DB 文件 mcpjungle.db。
仅在本地进行测试时,这样做没有问题。
如果未提供 PostgreSQL 配置或自定义 SQLite 路径,mcpjungle 会使用 ./mcpjungle.db。
你也可以选择为 SQLite DB 文件设置自定义路径:
mcpjungle start --sqlite-db-path ./.mcpjungle.db
# or
export SQLITE_DB_PATH=/path/to/.mcpjungle.db
mcpjungle start
注意:删除该 SQLite 文件会移除其中注册的所有服务数据以及其他 MCPJungle 状态。
对于更正式的部署,mcpjungle 也支持 Postgresql。你可以提供 DSN 来连接数据库:
# You can supply the database DSN as an env var
export DATABASE_URL=postgres://admin:root@localhost:5432/mcpjungle_db
#run as container
docker run ghcr.io/mcpjungle/mcpjungle:latest
# or run directly
mcpjungle start
如果你不想使用 DSN,也可以提供 Postgres 专用的环境变量或文件:
# host is mandatory if you're using postgres-specific env vars
export POSTGRES_HOST=localhost
export POSTGRES_PORT=5432
export POSTGRES_USER=admin
export POSTGRES_USER_FILE=/path/to/user-file
export POSTGRES_PASSWORD=secret
export POSTGRES_PASSWORD_FILE=/path/to/password-file
export POSTGRES_DB=mcpjungle_db
export POSTGRES_DB_FILE=/path/to/db-file
mcpjungle start
客户端
服务启动后,你可以使用 mcpjungle CLI 与其交互。
MCPJungle 目前支持使用 stdio 和 Streamable HTTP 传输的 MCP 服务。
说明
目前也支持 SSE(服务器发送事件),但尚未成熟。
接下来看看如何在 mcpjungle 中注册这些服务。
注册基于可流式传输 HTTP 的服务
假设你已经在本地运行了一个基于可流式传输 HTTP 的 MCP 服务,地址为 http://127.0.0.1:8000/mcp,它提供 add、subtract 等基本数学工具。
你可以将此 MCP 服务注册到 MCPJungle:
mcpjungle register --name calculator --description "Provides some basic math tools" --url http://127.0.0.1:8000/mcp
如果你使用 docker compose 运行服务,并且使用的不是 Linux,则必须使用 host.docker.internal,而不是本地环回地址。
mcpjungle register --name calculator --description "Provides some basic math tools" --url http://host.docker.internal:8000/mcp
注册表现在将开始跟踪此 MCP 服务并加载其工具。

你也可以提供配置文件来注册 MCP 服务:
cat ./calculator.json
{
"name": "calculator",
"transport": "streamable_http",
"description": "Provides some basic math tools",
"url": "http://127.0.0.1:8000/mcp"
}
mcpjungle register -c ./calculator.json
现在可以通过 MCPJungle 访问此服务提供的所有工具:
mcpjungle list tools
# Check tool usage
mcpjungle usage calculator__multiply
# Call a tool
mcpjungle invoke calculator__multiply --input '{"a": 100, "b": 50}'

说明
在 MCPJungle 中引用工具时,必须使用其规范名称,格式为
<mcp-server-name>__<tool-name>。 服务名称和工具名称之间用双下划线__分隔。例如,如果你注册了一个名为
github的 MCP 服务,该服务提供名为git_commit的工具,则可以在 MCPJungle 中使用名称github__git_commit调用它。MCP 客户端也必须使用此规范名称,通过 MCPJungle 调用该工具。
注册基于 Streamable HTTP 的 MCP 服务所用的配置文件格式为:
{
"name": "<name of your mcp server>",
"transport": "streamable_http",
"description": "<description>",
"url": "<url of the mcp server>",
"bearer_token": "<optional bearer token for authentication>",
"headers": {
"<custom http header>": "<value>"
}
}
注册基于 STDIO 的服务
以下是一个使用 STDIO 传输的 MCP 服务的示例配置文件(假设文件名为 filesystem.json):
{
"name": "filesystem",
"transport": "stdio",
"description": "filesystem mcp server",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "."]
}
你可以提供配置文件,在 MCPJungle 中注册此 MCP 服务:
# Save the JSON configuration to a file (e.g., filesystem.json)
mcpjungle register -c ./filesystem.json
注册基于 STDIO 的 MCP 服务所用的配置文件格式为:
{
"name": "<name of your mcp server>",
"transport": "stdio",
"description": "<description>",
"command": "<command to run the mcp server, eg- 'npx', 'uvx'>",
"args": ["arguments", "to", "pass", "to", "the", "command"],
"env": {
"KEY": "value"
}
}
你也可以观看这个简短视频:如何注册基于 STDIO 的 MCP 服务。
提示
如果你的 STDIO 服务失败或因某些原因报错,请检查 mcpjungle 服务的日志,查看其
stderr输出。
JSON 配置文件中的环境变量
使用 JSON 配置文件注册 MCP 服务或创建工具组等其他实体时,CLI 可以在发送请求前解析字符串值中的环境变量占位符。
- 只有
${VAR_NAME}格式的占位符才会被解析。 - 占位符可以出现在字符串值的任意位置,例如
prefix-${VAR_NAME}-suffix。 - 解析过程在 CLI 进程中进行,因此运行命令的环境中必须提供该环境变量。
- 如果未设置引用的环境变量,命令将报错失败。
- 这适用于 JSON 配置中的字符串字段,包括嵌套对象和字符串数组。
MCP 服务配置示例:
{
"name": "affine-main",
"transport": "streamable_http",
"description": "AFFiNE workspace MCP server",
"url": "https://app.affine.pro/api/workspaces/${AFFINE_WORKSPACE_ID}/mcp",
"bearer_token": "${AFFINE_API_TOKEN}",
"headers": {
"X-Workspace": "${AFFINE_WORKSPACE_ID}"
}
}
STDIO 配置示例:
{
"name": "my-stdio-server",
"transport": "stdio",
"command": "uvx",
"args": ["my-server", "--workspace", "${WORKSPACE_ID}"],
"env": {
"API_TOKEN": "${API_TOKEN}"
}
}
注意事项 ⚠️
在 Docker 中运行 mcpjungle 时,需要进行一些额外配置才能运行 filesystem MCP 服务。
默认情况下,容器中的 mcpjungle 无法访问主机文件系统。
因此,你必须:
- 将要访问的主机目录作为卷挂载到容器中
- 在 filesystem MCP 服务的命令参数中指定挂载路径作为目录
mcpjungle 提供的 docker-compose.yaml 会将当前工作目录挂载到容器中的 /host。
因此,你可以为 filesystem MCP 服务使用以下配置:
{
"name": "filesystem",
"transport": "stdio",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/host"]
}
这样,MCP 就可以访问 /host,即主机上的当前工作目录。
如需了解更多详情,请参阅 DEVELOPMENT.md。
从 Docker 或 Kubernetes 部署中运行 CLI 命令
如果你的 MCPJungle 服务运行在远程 Docker 容器或 Kubernetes 集群中,也可以直接在容器内执行 mcpjungle 二进制文件:
docker exec -it <container_name> /mcpjungle
kubectl -n <namespace> exec -it po/<pod_name> -- /mcpjungle
说明
标准镜像不包含 shell。请通过
docker exec或kubectl exec直接运行/mcpjungle。
这对于在服务运行的同一环境中执行 CLI 命令很有用。
注销 MCP 服务
你可以从 mcpjungle 中移除 MCP 服务。
mcpjungle deregister calculator
mcpjungle deregister filesystem
移除后,你和 MCP 客户端将无法再使用此 MCP 服务及其工具。
配置自定义注册表 URL
默认情况下,CLI 会连接到 http://127.0.0.1:8000 上的 mcpjungle 服务。
如果你的服务运行在其他主机或端口上(例如,远程部署),你可以通过以下两种方式配置注册表 URL:
选项 1:使用 --registry 标志
mcpjungle --registry http://my-server:9000 list tools
选项 2:在配置文件中设置
创建或编辑 ~/.mcpjungle.conf:
registry_url: http://my-server:9000
这样就无需在每条命令中传递 --registry 标志。
冷启动问题与有状态连接
默认情况下,MCPJungle 会在调用工具时,始终与上游 MCP 服务建立新连接。
工具调用完成后,连接会关闭。
这样可以保持系统整洁并避免内存泄漏。
但有时这会带来延迟开销。例如,每次调用基于 STDIO 的 MCP 服务的工具时,都会启动一个新进程。如果服务需要几秒钟才能启动,就会拖慢工具调用和整体交互。
为了解决这个问题,MCPJungle 还支持有状态连接。
你可以在 MCP 服务配置中将 session_mode 设置为 stateful(默认为 stateless):
{
"name": "filesystem",
"transport": "stdio",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "."],
"session_mode": "stateful"
}
mcpjungle 会在首次调用该 MCP 服务的工具时与其建立新连接。
工具调用完成后,此连接不会关闭。之后对该服务的工具调用会复用同一连接,从而避免冷启动开销。
连接仅在以下情况下关闭:
- mcpjungle 服务停止
- MCP 服务从 mcpjungle 中注销
- 连接在一段时间不活动后超时。你可以使用
SESSION_IDLE_TIMEOUT_SEC环境变量设置秒数,以便在 mcpjungle 服务中全局配置此项(默认值为 -1,表示无超时)。
建议在条件允许时使用无状态连接(默认设置)。
与其他 MCP 客户端集成
假设 MCPJungle 在 http://localhost:8080 上运行,请使用以下配置连接到它:
Claude
{
"mcpServers": {
"mcpjungle": {
"command": "npx",
"args": [
"mcp-remote",
"http://localhost:8080/mcp",
"--allow-http"
]
}
}
}
你可以观看快速视频:如何将 Cursor 连接到 MCPJungle。
Cursor
{
"mcpServers": {
"mcpjungle": {
"url": "http://localhost:8080/mcp"
}
}
}
Copilot
请参阅 Copilot 文档:手动配置 MCP 服务。
将 mcpjungle 添加到 mcp.json 配置文件后,文件内容应如下所示:
{
"servers": {
"mcpjungle": {
"url": "http://localhost:8080/mcp"
}
}
}
说明
你可能需要点击
Start,Copilot 才会开始与 mcpjungle 交互。
启用/禁用工具
你可以禁用或重新启用特定工具,或 MCP 服务提供的所有工具。
如果某个工具已禁用,则无法通过 MCPJungle 代理或任何工具组使用,因此 MCP 客户端无法查看或调用它。
你也可以禁用和启用提示词。
# disable the `get-library-docs` tool provided by the `context7` MCP server
mcpjungle disable tool context7__get-library-docs
# re-enable the tool
mcpjungle enable tool context7__get-library-docs
# disable all tools in context7
mcpjungle disable tool context7
# disable the whole `context7` MCP server (disables all tools & prompts)
mcpjungle disable server context7
# re-enable `context7`
mcpjungle enable server context7
# disable a prompt
mcpjungle disable prompt "huggingface_Model Details"
# disable all prompts in context7
mcpjungle disable prompt context7
禁用的工具仍可通过 mcpjungle 的 HTTP API 访问,因此用户仍可通过 CLI(或任何其他 HTTP 客户端)管理它。
说明
在 MCPJungle 中注册新服务时,其所有工具和提示词默认均为启用状态。
提示词
Mcpjungle 支持提示词。
注册新的 MCP 服务时,如果它提供提示词,这些提示词也会注册到 mcpjungle 中。
以下是使用 CLI 与提示词交互的一些示例:
# list all prompts provided by the huggingface mcp
$ mcpjungle list prompts --server huggingface
# Retrieve the "Model Details" prompt, supply custom arguments
$ mcpjungle get prompt "huggingface__Model Details" --arg model_id="openai/gpt-oss-120b"
工具组
随着你向 MCPJungle 添加更多 MCP 服务,通过网关提供的工具数量可能会大幅增加。
如果 MCP 客户端通过网关 MCP 接入数百个工具,其性能可能会下降。
MCPJungle 支持你使用工具组,仅向 MCP 客户端公开所有可用工具的子集。
你可以创建一个新组,并仅添加希望公开的特定工具。
创建组后,mcpjungle 会为其返回一个唯一端点。
然后,你可以将 MCP 客户端配置为使用此组专属端点,而不是主网关端点。
创建工具组
你可以通过向 create group 命令提供 JSON 配置文件来创建新工具组。
你必须为组指定唯一的 name,并使用以下一个或多个字段定义要包含的工具:
included_tools:列出要包含的特定工具名称(例如,["filesystem__read_file", "time__get_current_time"])included_servers:包含特定 MCP 服务中的所有工具(例如,["time", "deepwiki"])excluded_tools:排除特定工具(包含整个服务时很有用)
示例 1:精选特定工具
以下是一个工具组配置文件示例(claude-tools-group.json):
{
"name": "claude-tools",
"description": "This group only contains tools for Claude Desktop to use",
"included_tools": [
"filesystem__read_file",
"deepwiki__read_wiki_contents",
"time__get_current_time"
]
}
此组仅公开精心挑选的 3 个工具,而非所有可用工具。
示例 2:包含整个服务并排除特定工具
你也可以包含特定服务中的所有工具,并按需排除其中一些:
{
"name": "claude-tools",
"description": "All tools from time and deepwiki servers except time__convert_time",
"included_servers": ["time", "deepwiki"],
"excluded_tools": ["time__convert_time"]
}
此配置会包含 time 和 deepwiki 服务中的所有工具,但不包含 time__convert_time。
示例 3:混合使用不同方式
你可以组合使用这三个字段,以获得最大的灵活性:
{
"name": "comprehensive-tools",
"description": "Mix of manual tools, server inclusion, and exclusions",
"included_tools": ["filesystem__read_file"],
"included_servers": ["time"],
"excluded_tools": ["time__convert_time"]
}
此配置会包含 filesystem__read_file,以及 time 服务中的所有工具,但不包含 time__convert_time。
你可以在 mcpjungle 中创建此组:
$ mcpjungle create group -c ./claude-tools-group.json
Tool Group claude-tools created successfully
It is now accessible at the following streamable http endpoint:
http://127.0.0.1:8080/v0/groups/claude-tools/mcp
然后,你可以将 Claude(或任何其他 MCP 客户端)配置为使用此组专属端点来访问 MCP 服务。
客户端随后将只能看到并使用这 3 个工具,也不会知道 MCPJungle 中注册的任何其他工具。
提示
你可以运行
mcpjungle list tools查看所有可用工具,并挑选要包含在组中的工具。
你也可以观看工具组使用视频。
说明
排除操作始终会在最后执行。 因此,如果某个工具同时被添加到
included_tools并列在excluded_tools中,它将从最终组中排除。
限制 🚧
管理工具组
目前,你可以执行列出所有组、查看特定组的详细信息以及删除组等操作。
# list all tool groups
mcpjungle list groups
# view details of a specific group
mcpjungle get group claude-tools
# delete a group
mcpjungle delete group claude-tools
使用组内工具
你可以使用 --group 标志列出并调用特定组中的工具:
# list tools in a specific group
mcpjungle list tools --group claude-tools
# invoke a tool from a specific group context
mcpjungle invoke filesystem__read_file --group claude-tools --input '{"path": "README.md"}'
这些命令提供按组范围限定的操作,让你更轻松地在特定上下文中使用工具,并验证组中是否包含可用工具。
说明
如果某个工具已包含在组中,但之后被全局禁用或删除,则无法通过该组的 MCP 端点使用。
但如果之后重新启用或添加该工具,它将自动重新出现在组中。
限制 🚧
- 目前无法更新现有工具组。你必须删除该组,并使用修改后的配置文件创建新组。
- 在
enterprise模式下,目前只有管理员可以创建工具组。我们正在努力让普通用户也能创建自己的组。
身份验证
如果你的 Streamable HTTP MCP 服务接受静态令牌进行身份验证,MCPJungle 目前支持身份验证。
使用 HuggingFace、Stripe 等要求 API 令牌进行身份验证的 SaaS 提供商所提供的 MCP 服务时,这项功能很有用。
注册 MCP 服务时,可以提供令牌:
# If you specify the `--bearer-token` flag, MCPJungle will add the `Authorization: Bearer <token>` header to all requests made to this MCP server.
mcpjungle register --name huggingface --description "HuggingFace MCP Server" --url https://huggingface.co/mcp --bearer-token <your-hf-api-token>
也可以在配置文件中提供:
{
"name": "huggingface",
"transport": "streamable_http",
"url": "https://huggingface.co/mcp",
"description": "hugging face mcp server",
"bearer_token": "<your-hf-api-token>"
}
如果需要为 Authorization 标头提供自定义值,或添加其他自定义标头,可以在配置文件中使用 headers 字段:
{
"name": "sourcegraph",
"transport": "streamable_http",
"url": "https://sourcegraph.mycompany.com/.api/mcp",
"headers": {
"Authorization": "token <your-sourcegraph-token>",
"Custom-Header": "custom-value"
}
}
即将支持 OAuth 流程!
企业功能 🔒
如果你在组织中运行 MCPJungle,我们建议以 enterprise 模式运行服务:
# enable enterprise features by running in enterprise mode
mcpjungle start --enterprise
# you can also specify the server mode as environment variable (valid values are `development` and `enterprise`)
export SERVER_MODE=enterprise
mcpjungle start
# Or use the enterprise-mode docker compose file as described above
docker compose -f docker-compose.prod.yaml up -d
默认情况下,mcpjungle 服务以 development 模式运行,这种模式适合个人在本地运行。
在 Enterprise 模式下,服务会实施更严格的安全策略,并提供身份验证、ACL、可观测性等其他功能。
以 enterprise 模式启动服务后,必须在客户端计算机上运行以下命令来初始化服务:
mcpjungle init-server
这将在服务中创建一个管理员用户,并将其 API 访问令牌存储在你的主目录(~/.mcpjungle.conf)中。
然后,你可以使用 mcpjungle cli 向服务发送经过身份验证的请求。
访问控制
在 development 模式下,所有 MCP 客户端都可以完全访问 MCPJungle 代理中注册的所有 MCP 服务。
enterprise 模式允许你控制哪些 MCP 客户端可以访问哪些 MCP 服务。
假设你已在 MCPJungle 的 enterprise 模式下注册了 2 个 MCP 服务:calculator 和 github。
默认情况下,没有任何 MCP 客户端可以访问这些服务。你必须在 mcpjungle 中创建一个 MCP 客户端,并明确允许其访问 MCP 服务。
# Create a new MCP client for your Cursor IDE to use. It can access the calculator and github MCP servers
mcpjungle create mcp-client cursor-local --allow "calculator, github"
MCP client 'cursor-local' created successfully!
Servers accessible: calculator,github
Access token: 1YHf2LwE1LXtp5lW_vM-gmdYHlPHdqwnILitBhXE4Aw
Send this token in the `Authorization: Bearer {token}` HTTP header.
Mcpjungle 会为你的客户端创建一个访问令牌。
配置客户端或 Agent,使其在向 mcpjungle 代理发送请求时,在 Authorization 标头中携带此令牌。
提示
你也可以使用
--access-token标志,为 MCP 客户端和用户账户提供自定义访问令牌。 如果你想自行管理令牌(例如通过中央身份服务器管理),这会很有用。
例如,你可以在 Cursor 中添加以下配置,以连接到 MCPJungle:
{
"mcpServers": {
"mcpjungle": {
"url": "http://localhost:8080/mcp",
"headers": {
"Authorization": "Bearer 1YHf2LwE1LXtp5lW_vM-gmdYHlPHdqwnILitBhXE4Aw"
}
}
}
}
以这种方式获得特定服务访问权限的客户端,可以查看并调用该服务提供的所有工具。
说明
如果未指定
--allow标志,MCP 客户端将无法访问任何 MCP 服务。
从配置文件创建 MCP 客户端
你也可以通过提供 JSON 配置文件来创建 MCP 客户端:
{
"name": "foobar",
"allowed_servers": ["deepwiki", "time"],
"access_token": "my_secret_token_123",
"access_token_ref": {
"file": "/path/to/token-file.txt",
"env": "ENV_VAR_NAME"
}
}
从配置文件创建客户端时,必须提供自定义访问令牌,因为 mcpjungle 无法将生成的令牌打印到控制台。
在配置文件中提供自定义访问令牌
可以通过 3 种方式在配置文件中提供访问令牌:
- 直接在
access_token字段中提供:仅用于测试。不建议用于生产环境,尤其是当你要将配置文件提交到版本控制系统时。 - 使用
access_token_ref.file字段从文件中读取:文件中应仅包含令牌字符串。 - 使用
access_token_ref.env字段从环境变量中读取:环境变量中应包含令牌字符串。
你也可以在同一 JSON 配置文件的其他位置使用 ${VAR_NAME} 占位符。例如:
{
"name": "${MCP_CLIENT_NAME}",
"allowed_servers": ["${PRIMARY_SERVER}", "time"],
"access_token_ref": {
"env": "CLIENT_TOKEN_ENV_NAME"
}
}
创建用户账户
除了 MCP 客户端外,你还可以在 mcpjungle 中为人类用户创建用户账户。
与企业模式下的管理员相比,用户的权限非常有限。 例如,他们可以查看和使用 MCP 服务,但没有在 mcpjungle 中写入的权限。
# Auto-generates a secret for user
mcpjungle create user bob
# Specify a custom access token for user
mcpjungle create user alice --access-token alice_token_123
# Create user from config file
mcpjungle create user --conf /path/to/user-config.json
创建用户的配置文件格式与 MCP 客户端的类似:
{
"name": "charlie",
"access_token": "charlies_secret_token",
"access_token_ref": {
"file": "/path/to/token-file.txt",
"env": "ENV_VAR_NAME"
}
}
同样,使用配置文件时,你必须提供自定义访问令牌。
与 MCPJungle 中的其他 JSON 配置文件一样,用户配置文件也支持字符串字段中的 ${VAR_NAME} 占位符。
OpenTelemetry
MCPJungle 支持兼容 Prometheus 的 OpenTelemetry 指标,用于可观测性。
- 在
enterprise模式下,默认启用 OpenTelemetry。 - 在
development模式下,默认禁用遥测。你可以在启动服务前将OTEL_ENABLED环境变量设为true来启用:
# enable OpenTelemetry metrics
export OTEL_ENABLED=true
# optionally, set additional attributes to be added to all metrics
export OTEL_RESOURCE_ATTRIBUTES=deployment.environment.name=enterprise
# start the server
mcpjungle start
mcpjungle 服务启动后,可通过 /metrics 端点获取指标。
当前限制 🚧
我们还不够完善,但正在努力改进!
1. MCPJungle 尚不支持用于身份验证的 OAuth 流程
此功能仍在开发中。
我们正在收集更多关于人们如何将 OAuth 与 MCP 服务结合使用的反馈,欢迎发起讨论或提交 issue,分享你的使用场景。
贡献 💻
我们欢迎社区贡献!
- 有关贡献指南和规范,请参阅 CONTRIBUTION.md
- 有关开发环境设置和技术详情,请参阅 DEVELOPMENT.md
加入我们的 Discord 社区,与其他贡献者和维护者交流。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。