One install. All your MCP servers. Managed from the cloud.
mcph is an MCP server that orchestrates all your other MCP servers. Configure your servers once on mcp.hosting, install mcph in your client, and never hand-edit MCP JSON configs again.
Your MCP client (Claude Code, Cursor, etc.)
|
| single stdio connection
v
@yawlabs/mcph
| | |
v v v
GitHub Slack Stripe ← your MCP servers (local or remote)
- You add servers on mcp.hosting (name, command, args, env vars)
- mcph pulls your config on startup
- You use 3 meta-tools to control which servers are active:
mcp_connect_discover— list all configured serversmcp_connect_activate— connect a server and load its toolsmcp_connect_deactivate— disconnect and remove tools
Only activated servers load tools into context. This keeps your context window clean.
{
"mcpServers": {
"mcph": {
"command": "npx",
"args": ["-y", "@yawlabs/mcph"],
"env": {
"MCPH_TOKEN": "mcp_pat_your_token_here"
}
}
}
}Add to your MCP settings:
{
"mcph": {
"command": "npx",
"args": ["-y", "@yawlabs/mcph"],
"env": {
"MCPH_TOKEN": "mcp_pat_your_token_here"
}
}
}Add to claude_desktop_config.json:
{
"mcpServers": {
"mcph": {
"command": "npx",
"args": ["-y", "@yawlabs/mcph"],
"env": {
"MCPH_TOKEN": "mcp_pat_your_token_here"
}
}
}
}- Sign up at mcp.hosting
- Go to Settings > API Tokens
- Create a token — it starts with
mcp_pat_ - Add it to your MCP client config as shown above
On mcp.hosting, add each MCP server you want to orchestrate:
| Field | Description |
|---|---|
| Name | Display name (e.g., "GitHub") |
| Namespace | Short prefix for tool names (e.g., "gh") |
| Type | local (stdio) or remote (HTTP) |
| Command | For local: the command to run (e.g., "npx") |
| Args | For local: command arguments (e.g., ["-y", "@modelcontextprotocol/server-github"]) |
| Env | Environment variables (API keys, tokens) |
| URL | For remote: the server URL |
Once configured, your LLM will see three tools. Here's the typical flow:
> What MCP servers do I have?
Available MCP servers:
gh — GitHub [available] (local)
slack — Slack [available] (local)
stripe — Stripe [available] (local)
0 active, 0 tools loaded.
> Activate my GitHub server
Activated "gh" — 24 tools available: gh_create_issue, gh_list_prs, ...
You can also activate multiple servers at once:
> Activate GitHub and Slack
Activated "gh" — 24 tools available: gh_create_issue, gh_list_prs, ...
Activated "slack" — 8 tools available: slack_send_message, slack_list_channels, ...
The tool list updates automatically via tools/list_changed. Your client will see the new tools immediately.
> List my open PRs
[gh_list_prs is called, returns results]
Tools are namespaced: {namespace}_{original_tool_name}. This prevents collisions between servers.
> Deactivate GitHub
Deactivated "gh". Tools removed.
This frees up context for other tools.
mcph polls mcp.hosting every 60 seconds for config changes. When you add, remove, or modify a server on the dashboard, mcph picks it up automatically — no restart needed.
| Variable | Required | Description |
|---|---|---|
MCPH_TOKEN |
Yes | Your personal access token from mcp.hosting |
MCPH_URL |
No | API URL (default: https://mcp.hosting) |
LOG_LEVEL |
No | Log verbosity: debug, info, warn, error (default: info) |
MCP_CONNECT_TIMEOUT |
No | Connection timeout in ms for upstream servers (default: 15000) |
MCP_CONNECT_IDLE_THRESHOLD |
No | Tool calls to other servers before auto-deactivating an idle server (default: 10) |
- Node.js 18+
- An mcp.hosting account
- mcp.hosting — Dashboard and server management
- @yawlabs/mcp-compliance — Test your MCP servers for spec compliance
- GitHub — Source code and issues