v0.1.0
First public release of mcp-hub — serve many stdio MCP servers from one container, published over HTTPS for Claude Web custom connectors, Claude Code and any other Streamable-HTTP MCP client.
Highlights
- Config is exactly Claude Code's
mcpServersformat — copy entries 1:1 into/config/mcp.json. - Path-based routing: one endpoint per server (
/<name>,/<name>/mcp). /hubaggregate: register a single connector and reach every server through 4 meta-tools (list_servers,list_tools,get_tool_schema,call_tool) instead of flooding the model context with N×tool schemas.- Built-in OAuth 2.1 authorization server: dynamic client registration, PKCE, single-password login, explicit per-client approval, rotating refresh tokens.
- Supervision: stdio children are spawned at boot, pinged and restarted with exponential backoff; a down server answers 503 instead of hanging. Remote
http/sseupstreams are supported natively with static headers. - Hot reload: edits to
mcp.jsonstart/stop/restart only the affected servers. - Stateless Streamable HTTP and no database — state is one JSON file plus a JWT key under
/data. - Runs non-root (uid 1000),
no-new-privileges, login rate limiting with fail2ban-friendly log lines.
Install
docker pull ghcr.io/ni-c/mcp-hub:0.1.0Multi-arch: linux/amd64 and linux/arm64. Tags: 0.1.0, 0.1, latest (tip of main) and sha-<commit>.
See the README for configuration, the environment variables (EXTERNAL_URL, PASSWORD_HASH, TRUSTED_PROXIES, …) and reverse-proxy requirements.