by mcpjungle
Self-hosted MCP Gateway for AI agents
# Add to your Claude Code skills
git clone https://github.com/mcpjungle/MCPJungleMCPJungle is an open source, self-hosted Gateway for all your Model Context Protocol Servers.
🧑💻 Developers use it to register & manage MCP servers and the tools they provide from a central place.
🤖 MCP Clients use it to discover and consume all these tools from a single "Gateway" MCP Server.

No comments yet. Be the first to share your thoughts!
This quickstart guide will show you how to:
docker composecurl -O https://raw.githubusercontent.com/mcpjungle/MCPJungle/refs/heads/main/docker-compose.yaml
docker compose up -d
Download the mcpjungle CLI on your local machine either using brew or directly from the Releases Page.
brew install mcpjungle/mcpjungle/mcpjungle
The CLI lets you manage everything in mcpjungle.
Next, lets add an MCP server to mcpjungle using the CLI. For this example, we'll use context7.
mcpjungle register --name context7 --url https://mcp.context7.com/mcp
Use the following configuration for your Claude MCP servers config:
{
"mcpServers": {
"mcpjungle": {
"command": "npx",
"args": [
"mcp-remote",
"http://localhost:8080/mcp",
"--allow-http"
]
}
}
}
Once mcpjungle is added as an MCP to your Claude, try asking it the following:
Use context7 to get the documentation for `/lodash/lodash`
Claude will then attempt to call the context7__get-library-docs tool via MCPJungle, which will return the documentation for the Lodash library.
Congratulations! 🎉
You have successfully registered a remote MCP server in MCPJungle and called one of its tools via Claude
You can now proceed to play around with the mcpjungle and explore the documentation & CLI for more details.
MCPJungle is shipped as a stand-alone binary.
brew install mcpjungle/mcpjungle/mcpjungle
Verify your installation by running
mcpjungle version
[!IMPORTANT] On MacOS, you will have to use homebrew because the compiled binary is not Notarized yet.
MCPJungle provides a Docker image which is useful for running the registry server (more about it later).
docker pull ghcr.io/mcpjungle/mcpjungle
MCPJungle has a Client-Server architecture and the binary lets you run both the Server and the Client.
The MCPJungle server is responsible for managing all the MCP servers registered in it and providing a unified MCP gateway for AI Agents to discover and call tools provided by these registered servers.
The gateway itself runs over streamable http transport and is accessible at the /mcp endpoint.
For running the MCPJungle server locally, docker compose is the recommended way:
# 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
[!NOTE] The
enterprisemode used to be calledproductionmode. The mode has now been renamed for clarity. Everything else remains the same.
This will start the MCPJungle server along with a persistent Postgres database container.
You can quickly verify that the server is running:
curl http://localhost:8080/health
If you plan on registering stdio-based MCP servers that rely on npx or uvx, use mcpjungle's stdio tagged docker image instead.
MCPJUNGLE_IMAGE_TAG=latest-stdio docker compose up -d
[!NOTE] If you're using
docker-compose.yaml, this is already the default image tag. You only need to specify the stdio image tag if you're usingdocker-compose.prod.yaml.
This image is significantly larger. But it is very convenient and recommended for running locally when you rely on stdio-based MCP servers.
For example, if you only want to register remote mcp servers like context7 and deepwiki, you can use the standard (minimal) image.
But if you also want to use stdio-based servers like filesystem, time, github, etc., you should use the stdio-tagged image instead.
[!NOTE] If your stdio servers rely on tools other than
npxoruvx, you will have to create a custom docker image that includes those dependencies along with the mcpjungle binary.
Production Deployment
The default MCPJungle Docker image is very lightweight - it only contains a minimal base image and the mcpjungle binary.
It is therefore suitable and recommended for production deployments.
For the database, we recommend you deploy a separate Postgres DB cluster and supply its endpoint to mcpjungle (see Database section below).
You can see the definitions of the standard Docker image and the stdio Docker image.
You can also run the server directly on your host machine using the binary:
mcpjungle start
This starts the main registry server and MCP gateway, accessible on port 8080 by default.
It is important that the mcpjungle server shuts down gracefully to ensure proper cleanup.
The recommended way to stop the server process is to send a SIGTERM signal to it.
The mcpjungle server relies on a database and by default, creates a SQLite DB file mcpjungle.db in the current working directory.
This is okay when you're just testing things out locally.
For more serious deployments, mcpjungle also supports Postgresql. You can supply the DSN to connect to it:
# 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
You can also supply postgres-specific env vars or files if you don't prefer using the DSN:
# 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
Once the server is up, you can use the mcpjungle CLI to interact with it.
MCPJungle currently supports MCP servers using stdio and Streamable HTTP Transports.
[!NOTE] Support for SSE (server-sent events) also