Run MCP
with auth, logs, and routing.
MCPHub started as a small config tool. Teams now use it to run MCP servers with auth, routing, logs, and shared access.
Centralized management
Monitor health, latency, and tool usage for each MCP server. Start, stop, hot-reload, and rotate credentials from the dashboard.
- Real-time health checks per server
- Hot-reload without restarting clients
- Audit log of every config change
- Per-server resource limits & quotas
Four routing modes, one config
Different teams need different views into your MCP fleet. MCPHub exposes the same servers through four URL patterns so you can mix aggregate, scoped, and direct access without re-deploying.
- /mcp: aggregate, all tools
- /mcp/{group}: scoped to a named group
- /mcp/{server}: single server passthrough
- /mcp/$smart: semantic tool discovery
/mcpaggregate247 tools/mcp/{group}groupscoped/mcp/{server}single1 server/mcp/$smartsemantictop-kSemantic tool discovery
A client with 200+ tools wastes context. Smart Routing indexes tool descriptions in a vector store and returns a small set per request.
- pgvector + Cohere embeddings (BYO supported)
- Per-request top-k tuning
- Falls back to keyword search if vector store down
- Works with every MCP-aware client
github.search_issues0.94linear.list_issues0.87notion.create_page0.83sentry.list_errors0.61OAuth 2.0 for clients and servers
Run MCPHub as the OAuth provider for downstream servers, or sit behind your existing IdP as a resource server. Per-user, per-group, and per-server scopes propagate to each tool call.
- GitHub, Google, and generic OIDC
- Server-to-server with M2M tokens
- Audit log: who called what, when
- PKCE + refresh token rotation
POST /mcp/{group}
Authorization: Bearer mcphub-sk-***
X-User-Id: u_8f3a
X-Scope: tools.read,tools.write
→ 200 OK · 12 tools available
→ audit: u_8f3a → github.search_issues
→ audit: u_8f3a → linear.list_issuesGroups & per-user visibility
One MCPHub instance, many teams. Define groups, assign servers, restrict which tools each user can call. Plays nicely with SCIM provisioning at the Enterprise tier.
- Role-based access (admin / member / viewer)
- Per-server visibility rules
- Group endpoints with separate quotas
- SCIM 2.0 provisioning (Enterprise)
platform-engdata-teamsupportPostgreSQL-backed storage
Swap the embedded JSON store for PostgreSQL when you need durability, replication, or horizontal scaling. All routes, groups, OAuth state, and usage records flow through the same schema.
- Single binary, Postgres is opt-in
- Migrations run on startup
- Read replicas for analytics
- Compatible with Neon, Supabase, RDS
services:
mcphub:
image: samanhappy/mcphub
environment:
DATABASE_URL: postgres://...
AUTH_SECRET: ${AUTH_SECRET}
depends_on: [postgres]
postgres:
image: postgres:16
volumes: [pgdata:/var/lib/postgresql/data]Put your MCP servers behind one endpoint.
Start with Docker. Connect Claude Desktop in five minutes.