LABSCO SUMMARY
One endpoint in front of every MCP server you run, with the routing decided per client.
What it takes off you is the fan-out: rather than registering ten servers in every client, you register the hub once and choose how much of it each client sees — everything, one group, one server, or only the tools that match the task.
What it is
A hub that connects to the MCP servers listed in your mcp_settings.json and re-exposes them over Streamable HTTP. A dashboard sits in front of it for adding, removing and updating servers without downtime.
What you get
- Four ways to connect a client:
/mcpfor all servers,/mcp/{group}for a logical group,/mcp/{server}for one, and/mcp/$smartfor AI-powered tool discovery using vector semantic search - Group-level control over which Tools, Prompts and Resources each server inside a group exposes
- Per-server sharing — keep a server private, share it with selected users, or make it public
- Tool result compression that shrinks large text outputs before they reach the client
- OAuth 2.0 in both client and server modes, plus GitHub and Google login through Better Auth in Database Mode
- The same
mcphubbinary as a CLI:mcphub servers list,mcphub tools list,mcphub tools get,mcphub call,mcphub keys create, andmcphub discover/mcphub installagainst the public marketplace API - Transparent forwarding of interactive MCP Apps on single-server routes
Requirements
A mcp_settings.json describing the servers to front. The quickest path is Docker: docker run -p 3000:3000 -v ./mcp_settings.json:/app/mcp_settings.json -v ./data:/app/data samanhappy/mcphub. The dashboard opens at http://localhost:3000 with username admin; without ADMIN_PASSWORD a random password is printed to the server logs on first launch. MCP endpoints require authentication by default. DISABLE_WEB=true runs it headless, and Database Mode stores configuration in PostgreSQL with pgvector for smart routing. The latest-full image adds a Rust toolchain, Docker Engine and Playwright browsers for servers that need them.
Setup effort
One command — docker run -p 3000:3000 -v ./mcp_settings.json:/app/mcp_settings.json -v ./data:/app/data samanhappy/mcphub
USE CASES
01
Giving one client a curated subset of your servers
Group servers logically and point the client at /mcp/{group}. Tool, Prompt and Resource visibility is set per server inside the group, so a client can get a server's tools without its resources.
02
Keeping tool definitions out of the context window
Connect to /mcp/$smart and let semantic search surface the relevant tools instead of advertising every tool from every server on every turn.
03
Changing your server line-up without restarting clients
Add, remove or update servers from the dashboard or the CLI. The hub reloads them in place, so the endpoint your clients already point at keeps working.
04
Calling a tool from a terminal or CI job
Log in with mcphub login, discover what is available with mcphub tools list, check a tool's parameters with mcphub tools get, then invoke it with mcphub call. Scoped keys come from mcphub keys create.
05
Fronting a server that needs interactive OAuth
The hub can act as an OAuth 2.0 client for downstream servers and as an OAuth 2.0 server for callers, so a credential is authorized once at the hub rather than in every client.
BEFORE YOU INSTALL
What to know first
Requires
- Docker
- A mcp_settings.json listing the MCP servers the hub should front, in the folder you run the command from — the published docker run mounts ./mcp_settings.json into the container
INSTALLATION
Connect your client
Server setup
TERMINAL
docker run -p 3000:3000 -v ./mcp_settings.json:/app/mcp_settings.json -v ./data:/app/data samanhappy/mcphubMCP Clients
Cursor
CURSOR · JSON
{
"mcpServers": {
"mcphub": {
"url": "http://localhost:3000/mcp"
}
}
}MCPHub's MCP endpoints require authentication by default. Create a bearer key (mcphub keys create --name <name> --access-type all, or in the dashboard's Keys section) and send it as an Authorization: Bearer <key> header, or turn off Enable Bearer Authentication in the Keys section if the hub only runs somewhere you trust.
MCPHub CLI
MCPHUB CLI · TERMINAL
mcphub login --url http://localhost:3000 --username admin