MCP-агрегатор: объединяем инструменты для LLM в один сервер

MCP-агрегатор: объединяем инструменты для LLM в один сервер

При работе с локальными LLM через Claude Desktop, Kilo Code, Cursor или другие MCP-клиенты часто возникает одна и та же ситуация: Нуженfilesystemдля работы с файлами,web-searchдля поиска в интернете,memoryдля хранения контекста между сессиями,sequential-thinkingдля сложных рассуждений. И ещё десяток серверов…

Каждый MCP-сервер — это отдельный процесс, отдельная конфигурация, отдельная точка отказа. Файл конфигурации MCP обрастает десятками записей, а управление этим стадом серверов превращается в еще одну проблему. Где лежит файл конфигурации MCP для конкретного агентского приложения - лучше было бы выбирать самому, например, держать его прямо в папке проекта. Кроме того, имя mcp-сервера, в принципе не так важно для LLM как имена и описание инструментов в нем, так что одного, но полного списка инструментов (функций) было бы достаточно.

Что если бы можно было запустить один сервер, который автоматически подтягивал бы все остальные?

Решение: MCP Aggregator🔌

✅ Читает единыйMCP.jsonс конфигурацией всех серверов✅ Автоматически запускает их как дочерние процессы✅ Проксирует все инструменты через единый интерфейс✅ Управляет жизненным циклом (автоперезапуск при падении)✅ Работает с любым MCP-клиентом

Как это работает

Агрегатор работает какMCP-клиентдля дочерних серверов и какMCP-сервердля приложения. Он:

  1. ПарситMCP.jsonи находит все сконфигурированные серверы
  2. Запускает каждый черезStdioClientTransport
  3. Запрашивает capabilities (tools/list,resources/list,prompts/list)
  4. Регистрирует их под своими именами с префиксами
  5. Проксирует вызовы инструментов к нужному серверу

Пространство имён инструментов

Чтобы избежать конфликтов имён, все инструменты получают префикс сервера:

Через агрегатор

filesystem

filesystem-read_file

web-search

web-search-search

create_entities

memory-create_entities

sequential-thinking

sequentialthinking

sequential-thinking-sequentialthinking

Это позволяет LLM явно понимать, какой инструмент какого сервера вызывается.

Конфигурация

Всё управление — через один файлMCP.json:

Формат полностью совместим с конфигурацией популярных MCP-клиентов — можно скопировать секциюmcpServersиз файла конфигурации вашего клиента.

Установка и использование

Вариант 1: Через npx (быстрый старт)

Вариант 2: Глобальная установка

Вариант 3: Из исходников

Подключение к MCP-клиенту (на примере Claude Desktop)

Добавьте в конфигурационный файл вашего клиента (например,claude_desktop_config.jsonдля Claude Desktop):

Теперь вместо 10 отдельных записей остаётся одна —aggregator. Все инструменты из всех дочерних серверов автоматически становятся доступны в Claude Desktop.

Ключевые фичи

🔄 Автоперезапуск

Если дочерний сервер падает, агрегатор автоматически перезапускает его с экспоненциальным backoff (до 5 попыток). Это критично для долгоживущих сессий.

🛡️ Устойчивость к ошибкам

Если один сервер не запустился (например, не установлен Python дляfile-search-mcp), остальные продолжают работать. Агрегатор просто пропускает проблемный сервер и логирует ошибку.

📊 Полный проксинг

Проксируются не только инструменты, но и:

  • Resources— чтение ресурсов из дочерних серверов
  • Prompts— шаблоны промптов
  • Capabilities— автоматическое обнаружение возможностей

🔍 Отладочный режим

Запуск сDEBUG=1даёт подробные логи:

Все логи идут вstderr(stdout зарезервирован для MCP-протокола).

Производительность

Агрегатор добавляет минимальный overhead:

  • Задержка проксирования: <1ms (прямая передача JSON-RPC сообщений)
  • Потребление памяти: несколько мегабайт на сам агрегатор
  • Запуск дочерних серверов: параллельный

Когда это полезно?

✅Много MCP-серверов— упрощает конфигурацию✅Частые эксперименты— легко добавлять/убирать серверы✅Production-окружение— автоперезапуск и устойчивость✅Командная работа— единыйMCP.jsonв репозитории✅CI/CD— один сервер вместо десяти

Когда НЕ нужно?

❌ Всего 1-2 MCP-сервера — проще настроить напрямую❌ Если максимальная производительность, то прямой вызов всегда быстрее❌ Специфичная логика обработки ошибок для каждого сервера

Результаты

MCP-агрегатор решает проблему управления множеством MCP-серверов. Вместо ручного запуска десятка процессов и сложной конфигурации — один сервер, один конфиг, одна точка входа.

Попробовать:

  • 📦 npm:npm install @vugu/mcp-aggregator
  • 💻 GitHub:github.com/vuguzum/mcp-aggregator
  • 📖 Документация: README на двух языках
Читать оригинал