Your existing config, unchanged
/config/mcp.json is exactly Claude Code's mcpServers format. Copy entries over 1:1 — stdio commands, environment variables and native http/sse upstreams all work.
Configuration reference
Serve many stdio MCP servers over one HTTPS endpoint — with the Claude Code config format you already have, path-based routing, a context-friendly aggregate endpoint and a built-in OAuth 2.1 login.
/config/mcp.json is exactly Claude Code's mcpServers format. Copy entries over 1:1 — stdio commands, environment variables and native http/sse upstreams all work.
Configuration reference
Every server gets its own Streamable HTTP endpoint at /«name»/mcp. Register the servers you use most as individual connectors, with no extra container per server.
Endpoint reference
A single connector that exposes every server through four meta-tools — so your model's context holds 4 tool schemas instead of N×tools.
Meta-tool reference
Dynamic client registration, PKCE, one password, explicit per-client approval, 15-minute access tokens and rotating refresh tokens with reuse detection.
Security model
Children are spawned at boot, pinged every 60 s and restarted with exponential backoff. A dead server answers 503 on its path — never silence.
How it works
State is one JSON file plus a JWT key on a volume. The transport is stateless, so a client that reconnects without closing its session cannot leak processes.
Architecture
mkdir -p data && sudo chown -R 1000:1000 data # the container runs as uid 1000
docker run -d --name mcp-hub \
-p 127.0.0.1:7690:80 \
-e EXTERNAL_URL="https://mcp.example.net" \
-e PASSWORD_HASH="$(htpasswd -bnBC 10 '' 'yourpassword' | tr -d ':\n')" \
-e TRUSTED_PROXIES="192.168.1.0/24" \
-v "$PWD/mcp.json:/config/mcp.json:ro" \
-v "$PWD/data:/data" \
ghcr.io/ni-c/mcp-hub:0.5.0Point a reverse proxy with a TLS certificate at 127.0.0.1:7690, then add https://mcp.example.net/hub as a custom connector in Claude and log in once with the password.
| If you want to… | Read |
|---|---|
| understand the problem it solves | What is mcp-hub? |
| get a working deployment | Getting started · Deployment |
write your mcp.json | Configuration |
| hook up Claude Web or Claude Code | Connecting clients |
| run it safely on the public internet | Security |
| know what happens inside | Architecture |
| fix something that is misbehaving | FAQ & troubleshooting |