Skip to content

mcp-hubOne container for all your MCP servers

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.

mcp-hub

The shape of it

Request flow from an MCP client through a reverse proxy into mcp-hub and on to its child serversMCP clientClaude Web · Claude CodeReverse proxyTLS terminationmcp-hubone Node processOAuth 2.1 AS/hub · /<name>/mcpsupervisorping · backoff restart · hot reloadpaperlessstdio childcalendarstdio childhomeassistantremote http/sseTLS
One process terminates the client's OAuth session, routes by path, and keeps every configured server alive behind it.

Try it in two minutes

sh
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.0

Point 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.

Full walkthrough →

Where to go next

If you want to…Read
understand the problem it solvesWhat is mcp-hub?
get a working deploymentGetting started · Deployment
write your mcp.jsonConfiguration
hook up Claude Web or Claude CodeConnecting clients
run it safely on the public internetSecurity
know what happens insideArchitecture
fix something that is misbehavingFAQ & troubleshooting

Released under the MIT License. Not affiliated with Anthropic; “Claude” is a trademark of Anthropic PBC.