MCPHubBETA
FEATURES

Everything you need to run
MCP in production.

MCPHub started as a personal config wrangler and grew into the production-grade hub teams trust with their AI tool surface. These are the pieces that get you there.

01 · Operations

Centralized management

Monitor health, latency, and tool usage of every connected MCP server. Start, stop, hot-reload, and rotate credentials from a single dashboard — no SSH-ing into containers or hand-editing JSON across machines.

  • Real-time health checks per server
  • Hot-reload without restarting clients
  • Audit log of every config change
  • Per-server resource limits & quotas
Operations docs
Servers · health overview
● all healthy
G
github
v2025.05.17
120ms● healthy
P
postgres
v2025.05.16
137ms● healthy
P
playwright
v2025.05.15
154ms● healthy
S
slack
v2025.05.14
171ms● healthy
B
brave-search
v2025.05.13
188ms● healthy
02 · Routing

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
Routing docs
/mcpaggregate247 tools
/mcp/{group}groupscoped
/mcp/{server}single1 server
/mcp/$smartsemantictop-k
03 · Smart Routing

Semantic tool discovery

When you have 200+ tools across 30+ servers, the model can't hold all of them in context. Smart Routing indexes every tool description into a vector store and returns only the matching subset 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
Smart Routing guide
“Find the last 5 issues mentioning database timeouts and create a tracking doc.”
SEMANTIC MATCH
github.search_issues0.94
linear.list_issues0.87
notion.create_page0.83
sentry.list_errors0.61
04 · Security

OAuth 2.0 — client & server modes

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, generic OIDC out of the box
  • Server-to-server with M2M tokens
  • Audit log: who called what, when
  • PKCE + refresh token rotation
OAuth setup
REQUEST · AUTHORIZATION
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_issues
GitHubGoogleOktaAuth0Generic OIDC
05 · Multi-tenant

Groups & 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)
Multi-tenant docs
platform-eng
14 users
githubpostgressentrylinear
data-team
8 users
postgressqlitesnowflake
support
22 users
slacknotionlinear
06 · Database mode

PostgreSQL-backed for serious deployments

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 still — Postgres is opt-in
  • Migrations run on startup
  • Read replicas for analytics
  • Compatible with Neon, Supabase, RDS
Database mode
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]
NeonSupabaseAWS RDSCrunchySelf-hosted

Ready to consolidate your MCP servers?

One Docker command, five minutes, zero config to start.