MCPHubBETA
FEATURES

One control plane for
your MCP infrastructure.

MCPHub is an open-source, self-hosted MCP gateway and control plane that centralizes connectivity, access, credentials, routing, and operations across your MCP servers.

01 · Control

Control access to MCP

Apply authentication and access controls with OAuth, OIDC, user-level keys, and bearer keys scoped to specific groups or servers.

  • GitHub, Google, and generic OIDC login
  • OAuth for downstream clients and upstream servers
  • User-level and scoped bearer keys
  • Tool-call activity logs with authentication context
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
02 · Credentials

Personal credentials, shared infrastructure

Define an MCP server once and let each user securely bind their own upstream credentials.

  • Encrypted per-user credential bindings
  • Isolated user runtime for stdio servers
  • Personal HTTP headers and API keys
  • Shared server configuration without shared secrets
Per-user credentials guide
Encrypted per-user credential bindings
Isolated user runtime for stdio servers
Personal HTTP headers and API keys
Shared server configuration without shared secrets
03 · Route

Organize servers and routes

Group servers, define aliases, and expose the same MCP fleet through aggregate, scoped, direct, and smart routes 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
04 · Smart Routing

Semantic 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 + OpenAI / Azure OpenAI embeddings
  • OpenAI-compatible endpoints 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
05 · Operate

Operate from one place

Monitor health, latency, and tool usage for each MCP server. Start, stop, hot-reload, and manage server authentication and OAuth connections from one place.

  • Real-time health checks per server
  • Hot-reload without restarting clients
  • Tool-call activity logs with user, API key, status, latency, and source IP
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
06 · Shared Access

Groups & per-user visibility

Share MCP servers with selected users and expose tailored toolsets through group endpoints. Each group can select which servers, tools, prompts, and resources are exposed.

  • Private, public, and shared server visibility
  • Per-user ownership and access
  • Group endpoints with selected tools, prompts, and resources
  • User-level and scoped bearer keys
Shared access docs
platform-eng
14 users
githubpostgressentrylinear
data-team
8 users
postgressqlitesnowflake
support
22 users
slacknotionlinear
07 · Database mode

PostgreSQL-backed storage

Swap the embedded JSON store for PostgreSQL when you need durable, centralized persistence for production deployments.

  • PostgreSQL-backed configuration and runtime metadata
  • Durable persistence for users, servers, groups, OAuth, and activity data
  • Compatible with managed PostgreSQL services
  • Suitable foundation for production deployments
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

Put your MCP servers behind one gateway.

Start with Docker. Connect Claude Desktop in five minutes.