What MCPHub does
MCPHub MCP server provides a central control point between MCP clients and the servers they use. It can connect local and remote MCP servers, then expose their tools, prompts, and resources through shared MCP endpoints. Routes can target every connected server, a group, one server, or smart routing based on semantic tool discovery.
The gateway is intended for self-hosted deployments. It includes a browser dashboard for configuration and runtime operations, plus backend and MCP endpoints that can run without the dashboard. MCPHub belongs in the Developer Tools category and is relevant when a team wants to manage several MCP backends without configuring each client separately.
How it works
Connected servers can use stdio, SSE, or streamable HTTP transports. MCPHub maintains stable routes while servers are added, removed, or changed through hot-swappable configuration. Client connections can use paths such as /mcp, /mcp/{group}, /mcp/{server}, and /mcp/$smart; a configurable base path can be placed before these routes.
Access controls include bearer keys, OAuth 2.0 client and server modes, server or group visibility, and per-user credential bindings. Per-user credentials support isolated stdio runtimes for personal keys attached to a shared server. Logs record tool-call activity, request status, latency, and server logs, while health checks show connection and server status.
Setup and configuration
Docker is the documented quick-start option. Run the samanhappy/mcphub image with port 3000 published and mount ./data at /app/data so settings, users, and credential bindings persist. The default image includes Node.js, pnpm, Python, uv/uvx, Git, and build tools. The latest-full image additionally includes Rust tooling, Docker Engine, and Playwright browsers for supported amd64 deployments.
Before the first launch, servers can be declared in data/mcp_settings.json under mcpServers, with fields such as command and args. Servers can also be added or edited in the dashboard. Node.js 20 or newer and pnpm 10.12.4 are needed for source-based local development.
Set ADMIN_PASSWORD to choose the initial administrator password. Without it, the first launch generates a password and prints it to the logs. DISABLE_WEB=true runs the backend and MCP endpoints without serving the dashboard. SMART_ROUTING_PATH changes the visible smart-routing path, and BASE_PATH adds a prefix to routes.
Tools and capabilities
- Aggregate multiple MCP servers behind one gateway
- Route clients to all servers, groups, individual servers, or smart routing
- Support stdio, SSE, and streamable HTTP connections
- Manage Tool, Prompt, and Resource exposure
- Apply OAuth 2.0, bearer authentication, and visibility controls
- Store production configuration in PostgreSQL database mode
- Proxy interactive MCP Apps on single-server routes
- Compress large text tool results before delivery
- Inspect activity, latency, request status, logs, and health
Limitations and notes
MCP endpoints require authentication by default. Disabling bearer authentication permits unauthenticated MCP access and should be limited to trusted environments. The dashboard's skip-authentication setting does not remove MCP endpoint authentication requirements.
Social login through GitHub or Google requires Database Mode. The extended Docker image is larger and its Playwright browsers are available for amd64 only. Custom smart-routing path segments must not conflict with an existing server name, group name, or group ID.