A gateway that merges everything creates the problem it was meant to solve: hundreds of tools in one list, and a model that picks badly among them. Groups fix that by cherry-picking tools or whole servers into a named endpoint, so Claude Desktop and a production agent can share the registry without sharing a tool list. Disabling is the blunter version of the same idea, and it applies everywhere at once.
A self-hosted MCP gateway. Servers are registered once in MCPJungle, and Claude, Cursor, Codex or your own agents connect to one endpoint instead of each carrying its own configuration.
- One MCP endpoint fronting every registered server, reachable over Streamable HTTP or through mcp-remote for clients that need a bridge
- Unified discovery: tools, prompts and resources from all registered servers listed in one place, with tool names namespaced by server
- Individual tools disabled and re-enabled, or a whole server switched off — a disabled tool disappears from the proxy and from every group, while staying manageable over the HTTP API
- Tool Groups, each with its own endpoint, built by naming the tools to include, whole servers to include, or servers minus specific exclusions
- Prompts registered alongside tools, listed per server and retrieved with arguments supplied
- Static token authentication for upstream servers — a bearer token per registered server, or arbitrary headers when the Authorization format is not standard
- A dashboard UI, and an enterprise mode with access control for shared deployments
- A CLI for the whole lifecycle: register servers, list what is available, enable and disable, and create groups from JSON configuration
Somewhere to run it: the published docker-compose file starts the server locally, and container images are on GHCR. Upstream servers that need credentials take a bearer token or custom headers at registration time; OAuth against upstream servers is not supported yet. Clients point at the gateway's /mcp path — directly if they speak Streamable HTTP, or through mcp-remote with --allow-http for a local deployment. Running it for a team means the enterprise mode, started with --enterprise or SERVER_MODE=enterprise.
One command — brew install mcpjungle/mcpjungle/mcpjungle
