mcp-aggregator
Aggregates tools from a Home Assistant MCP backend server, exposing home automation tools through the aggregator.
Aggregates tools from an Ollama MCP backend server, though it currently has known protocol version mismatch issues.
Aggregates tools from a Portainer MCP backend server, exposing container and infrastructure management tools through the aggregator.
Aggregates tools from a Proxmox MCP backend server, exposing VM management tools (like list_vms) through the aggregator.
Aggregates tools from a SearXNG MCP backend server, exposing search tools through the aggregator.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-aggregatorlist all available tools across every connected backend"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
$ mcp-aggregator
Gives your AI assistants one address that reaches all of your tools, instead of a dozen. You list your tool servers once, and any assistant that connects here can use every one of them.
In plain terms: An MCP server is a plug-in that lets an AI assistant use a tool, such as search or smart-home control. If you run many of them, each new assistant needs a dozen settings copied in by hand. This project bundles them behind a single URL and a single password (token).
A Fathom Works project.
Every tool name gets its backend as a prefix, so nothing collides. Tool
list_vmson backendproxmoxshows up asproxmox__list_vms.One backend being down, slow, or misconfigured never breaks the others.
Tool lists refresh on an interval, so backends can add or remove tools without a restart.
A REST side-channel (
/api/servers,/api/servers/:id/tools) exposes live health and per-backend tool lists for anything that wants to build on top of this, such as a catalog page or a dashboard.
This is the source of truth for "what MCP servers exist." Anything that wants a live catalog — a store UI, a dashboard — should read/api/servers from here, not the other way around.
[ quick start ]
Download the project, copy the example settings, and start it with Docker.
$ git clone https://github.com/jemplayer82/mcp-aggregator && cd mcp-aggregator
$ cp config.example.json config.json # edit with your real backend URLs
$ cp .env.example .env # fill in tokens for backends that need them
$ docker compose up -d
$ docker compose logs mcp-aggregator # shows the auto-generated aggregator tokenCheck that it is running.
$ curl -sf http://localhost:3117/healthz
# → {"ok":true}Point any MCP client at http://your-host:3117/mcp with the printed bearer token, and it has every enabled backend's tools.
Related MCP server: mcp-gw
[ usage ]
Connect an assistant: give it the
/mcpURL above and the aggregator token.Check on your backends: request
/api/serversto see which are connected, how many tools each has, and the last error.See one backend's tools: request
/api/servers/:id/toolsfor its raw, unprefixed tool list.Pause a backend: set
"enabled": falseon its entry inconfig.json.
All endpoints except /healthz need Authorization: Bearer <AGGREGATOR_MCP_TOKEN>.
endpoint | method | what |
| GET | liveness, unauthenticated |
| GET/POST | the aggregated MCP server — streamable-HTTP, stateless per request |
| GET | JSON status of every configured backend: connected, tool count, last error |
| GET | raw (unnamespaced) tool list for one backend |
[ configuration ]
Your backends are listed in config.json. Each entry takes these fields (full table and example in docs/configuration.md).
field | required | what it does |
| yes | short name; lowercase letters, numbers, hyphens, no underscores |
| no | display name, defaults to |
| yes | the backend's MCP address, ending in |
| no |
|
| no | name of the env var holding the backend's token (the token lives in |
config.json and .env are gitignored. Only config.example.json and .env.example are tracked.
[ docs ]
docs/configuration.md — every
config.jsonfield, with an example.docs/deployment.md — running more than one instance, known backend issues, and how this differs from mcp-switchboard.
CONTRIBUTING.md — how to contribute.
[ license ]
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server for Riveter's enrichment, scraping, and monitoring API
The MCP server that finds MCP servers. Aggregates Official Registry, Glama, and Smithery.
MCP server for mandates, delegation, policy-gated execution, credential grants, and audit.
MCP server for progressive tool usage at any scale (see https://klavis.ai)
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceAggregates multiple backend MCP servers into a single unified interface with optional web management UI for tool control and configuration.46 npm196MIT
- AlicenseNot gradedqualityBmaintenanceAggregates multiple MCP servers into a single HTTP endpoint with tool namespacing, dashboard, and REST API for management.32 npmMIT
- AlicenseNot gradedqualityBmaintenanceAggregates multiple MCP servers into a single Streamable HTTP endpoint, compressing tools to manage registration limits.31 npmMIT
- AlicenseNot gradedqualityBmaintenanceAggregates multiple MCP backend servers behind a single HTTP/SSE endpoint, exposing all tools and resources with name-prefixed routing, hot reload, and structured request logging.MIT