| Crates.io | mcpd |
| lib.rs | mcpd |
| version | 1.0.1 |
| created_at | 2025-12-06 00:19:10.283929+00 |
| updated_at | 2025-12-06 00:30:37.447432+00 |
| description | Aggregates multiple MCP servers behind a single endpoint |
| homepage | |
| repository | https://github.com/xandwr/mcpd |
| max_upload_size | |
| id | 1969444 |
| size | 54,305 |
A daemon that aggregates multiple MCP (Model Context Protocol) servers into one.
Register any MCP server once with mcpd, then point your MCP client at mcpd. Add or remove servers without reconfiguring your client.
cargo install mcpd
or for local:
cargo install --path .
mcpd register <name> <command> [args...]
Examples:
# Register a Node.js MCP server
mcpd register filesystem npx -y @anthropic/mcp-filesystem /home/user/documents
# Register a Python server
mcpd register mytools python -m my_mcp_server
# Register with environment variables
mcpd register api-tools node server.js -e API_KEY=sk-xxx -e DEBUG=1
mcpd list
mcpd unregister <name>
mcpd serve
This starts mcpd in stdio mode, ready to accept MCP connections.
Point your MCP client at mcpd instead of individual servers.
Claude Code (~/.claude/settings.json):
{
"mcpServers": {
"mcpd": {
"command": "mcpd",
"args": ["serve"]
}
}
}
Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"mcpd": {
"command": "mcpd",
"args": ["serve"]
}
}
}
~/.config/mcpd/registry.json)<server>__<tool> to avoid collisions┌─────────────────┐
│ MCP Client │
│ (Claude, etc.) │
└────────┬────────┘
│ stdio
▼
┌─────────────────┐
│ mcpd │
└──┬─────┬─────┬──┘
│ │ │ stdio (spawned on-demand)
▼ ▼ ▼
┌─────┐┌─────┐┌─────┐
│ srv1││ srv2││ srv3│
└─────┘└─────┘└─────┘
MIT