mcp-gateway
MCP Gateway
Самостоятельно размещаемая плоскость управления для серверов Model Context Protocol. Определяйте все используемые MCP-серверы в одном месте, управляйте ими через веб-GUI и дайте вашим агентам единую конечную точку — для каждого сервера или для целой группы серверов с инструментами в пространстве имён.
Claude Code · Claude Desktop · Cursor · VS Code · your agent
│ Streamable HTTP /mcp/servers/<id> /mcp/groups/<id> (+ API key)
▼
┌────────────────────── MCP Gateway ──────────────────────┐
│ web GUI · admin REST API · sessions · logs │
│ groups: namespaced tools pg-analytics__execute_sql … │
│ upstream manager: start/stop, restart w/ backoff, │
│ health checks, idle stop, tool filters & renames │
└───────┬──────────────────┬──────────────────┬───────────┘
stdio (npx/uvx/docker) Streamable HTTP legacy SSE
Postgres, filesystem… remote MCP servers older serversСценарий. Агенту нужны две базы данных Postgres. Вы добавляете pg-analytics и pg-orders в GUI (из шаблона PostgreSQL (DBHub)), помещаете их в группу databases и указываете агенту на http://gateway:8808/mcp/groups/databases. Агент видит pg-analytics__execute_sql и pg-orders__execute_sql; шлюз берёт на себя процессы, учётные данные, перезапуски и логи. Полная рабочая версия находится в examples/postgres-scenario.
Возможности
Любой вышестоящий транспорт — stdio-процессы (
npx,uvx,docker runи любые другие), Streamable HTTP и устаревшие SSE-удалённые серверы с аутентификацией bearer/basic/header.Управление жизненным циклом — автоматический/ленивый запуск, остановка при простое, перезапуск с экспоненциальной задержкой и пределом, пинги проверки работоспособности, таймауты запуска/запроса/вызова инструментов, перехват stderr.
Группы — несколько серверов за одной конечной точкой; инструменты и промпты с пространствами имён (
prefix__tool,.или-) либо сквозная передача с обработкой конфликтов; фильтры для каждого участника; объединённые инструкции; неявная группаall.Политика инструментов — include/exclude glob-шаблоны, скрытие, переименование и изменение описаний инструментов для каждого сервера.
Полное проксирование MCP — инструменты, ресурсы (+шаблоны, подписки), промпты, автодополнения, логирование, прогресс, отмена, распространение
list_changed, а также server→client семплирование / элиситацию / корни, направляемые обратно в исходную сессию.Нижестоящие транспорты — Streamable HTTP (с сохранением состояния и возобновляемыми потоками или без состояния), устаревший SSE, а также
mcp-gateway-connect— stdio-мост для таких клиентов, как Claude Desktop.Безопасность — API-ключи (хешированные, ограниченные серверами/группами, с истечением срока действия), административный токен для GUI/API, скрытие секретов, интерполяция
${ENV}, чтобы секреты никогда не приходилось записывать в конфиг, защита от DNS-rebinding, разрешённый список CORS.GUI — панель управления, каталог серверов с 16 шаблонами (Postgres ×3, MySQL, SQLite, filesystem, GitHub, Playwright, Context7, fetch, memory, …), редактор с вкладками и функцией Проверить подключение, обозреватель инструментов с Попробовать, обозреватели ресурсов/промптов, живые логи, метрики, сниппеты подключения для каждого клиента, сессии, настройки, импорт/экспорт (файлы
mcpServersдля Claude Desktop / Cursor / VS Code).
Related MCP server: Multi-MCP Hub
Скриншоты
Панель управления — запущенные серверы, группы, активные сессии и живая лента событий:

Каталог серверов: транспорт, статус, количество инструментов и перезапусков с первого взгляда:

Детальный вид сервера — сведения о рантайме и конечной точке, а также обозреватель инструментов для вызова инструментов прямо из GUI:

Быстрый старт
Требования: Node.js ≥ 20 (плюс npx/uvx/docker для тех вышестоящих серверов, которые вы запускаете).
git clone <this repo> mcp-gateway && cd mcp-gateway
npm install
npm run build
npm start # → http://127.0.0.1:8808Затем в GUI: Серверы → Добавить сервер → PostgreSQL (DBHub) → вставьте DSN → Проверить подключение → Создать сервер. Откройте вкладку Подключение и скопируйте сниппет для вашего клиента, например:
claude mcp add --transport http pg-analytics http://127.0.0.1:8808/mcp/servers/pg-analyticsРежим разработки (Vite с горячей перезагрузкой на :5173, шлюз на :8808): npm run dev.
Docker
docker compose up -d --build # GUI on http://localhost:8808, data in ./dataОбраз содержит node/npx, uvx и git, поэтому npm- и Python-based MCP-серверы можно запускать внутри контейнера. Если порт доступен другим, задайте GATEWAY_ADMIN_TOKEN в переменных окружения. Чтобы предварительно загрузить конфигурацию, смонтируйте файл и задайте GATEWAY_SEED_CONFIG=/path/to/config.json — при первом запуске он копируется в том данных.
Как это устроено
Концепция | Что это такое |
Сервер | Определение одного вышестоящего MCP-сервера: транспорт, жизненный цикл, политика инструментов, параметры пересылки. Конечная точка |
Группа | Упорядоченный набор серверов, представленный как один виртуальный MCP-сервер с инструментами/промптами в пространстве имён и объединёнными ресурсами. Конечная точка |
API-ключ | Bearer-токен для |
Сессия | Один подключённый клиент (Streamable HTTP или SSE). Видна и может быть закрыта в GUI. |
Административный токен | Защищает GUI и |
Конфигурация — это один JSON-файл (data/config.json, режим 0600, атомарная запись, сохраняется .bak) — описание всех полей см. в docs/CONFIG.md. Настройка клиентов для каждого инструмента описана в docs/CLIENTS.md; полное описание архитектуры — в docs/SPEC.md. В GUI также есть встроенная страница Документация (/docs, рядом с настройками), которая рассказывает, как работает шлюз и как добавлять, настраивать и подключать серверы.
CLI
mcp-gateway serve [--host 127.0.0.1] [--port 8808] [--data-dir ./data] [--config <file>] [--public-url <url>] [--log-level info]
mcp-gateway import <file> [--format gateway|mcpServers] [--mode merge|replace] # into the config file (restart to apply)
mcp-gateway export [--format gateway|mcpServers] [--secrets] [--out <file>]
mcp-gateway hash-token <token> # sha256 for settings.auth.adminTokenHash
mcp-gateway connect <url> [--api-key K] [--header 'Name: v'] [--sse] # stdio ⇄ HTTP bridge
mcp-gateway-connect <url> … # same bridge as a standalone package (@mcp-gateway/connect)Переменные окружения: GATEWAY_HOST, GATEWAY_PORT, GATEWAY_DATA_DIR, GATEWAY_CONFIG, GATEWAY_ADMIN_TOKEN, GATEWAY_PUBLIC_URL, GATEWAY_LOG_LEVEL, GATEWAY_REQUIRE_API_KEY, GATEWAY_WEB_DIR, GATEWAY_SEED_CONFIG (Docker). Приоритет: флаги CLI > переменные окружения > config.json > значения по умолчанию.
Эндпоинты
Маршрут | Назначение |
| Конечные точки Streamable HTTP MCP |
| устаревшие HTTP+SSE |
| проверка доступности (без аутентификации) |
| административный REST API (JSON; |
| лента Server-Sent Events (статусы, логи, сессии, метрики), используемая GUI |
| веб-GUI |
Полный список маршрутов с форматами запросов и ответов приведён в docs/SPEC.md §7.
Замечания по безопасности
Без административного токена GUI/API открыты: оставьте привязку к loopback по умолчанию или задайте
GATEWAY_ADMIN_TOKEN.Включите Требовать API-ключ перед тем, как открывать
/mcpза пределами localhost; ограничьте ключи серверами/группами, которые нужны каждому агенту.Секреты: предпочитайте ссылки
${VAR}литеральным значениям; значения под ключами, похожими на секреты, скрываются в ответах API и при экспорте (экспорт с?secrets=1/ с секретами включает их).Для всего, что доступно из интернета, ставьте перед шлюзом reverse proxy с терминацией TLS (это необходимо для MCP-коннектора Anthropic API).
Шлюз выполняет команды, которые вы настраиваете, — любой, у кого есть административный доступ, может запускать произвольные процессы на хосте.
Разработка
npm run dev # gateway (tsx watch) + Vite dev server
npm run typecheck # all workspaces
npm test # vitest: shared unit tests, server integration tests (real stdio/HTTP fixtures), bridge tests
npm run build # server bundle (esbuild), connect bundle, web (vite)Структура: packages/shared (схема конфигурации на zod, DTO, шаблоны, вспомогательные функции именования — безопасно для браузера), packages/server (Express 5 + @modelcontextprotocol/sdk: менеджер вышестоящих серверов, прокси-сервер, сессии, REST/MCP-маршруты, CLI), packages/web (React 19 + Vite), packages/connect (stdio-мост), examples/postgres-scenario (демо на docker-compose).
Ограничения / планы развития
OAuth для вышестоящих серверов не реализован (используйте аутентификацию bearer/basic/header); OAuth для нижестоящих клиентов также не реализован (вместо него — API-ключи).
Ресурсы не имеют пространств имён в группах — URI направляются на сервер-владелец; одинаковые URI у разных участников разрешаются в пользу первого участника.
Нет ограничения частоты запросов; если оно нужно, ставьте перед шлюзом reverse proxy.
Однопроцессный режим, сессии и логи в памяти (при перезапуске сессии теряются; клиенты повторно инициализируются).
Лицензия
This server cannot be deployed
Maintenance
Related MCP Connectors
Governed MCP gateway: one endpoint for your tools, with credential custody and audit log.
One MCP endpoint for your company's tools, with per-person sign-in, policy and audit.
Managed MCP gateway with OAuth, per-agent permissions, shared accounts and activity logs.
Unified gateway exposing 150+ tools across all NexGenData MCP servers via one endpoint.
Related MCP Servers
- FlicenseNot gradedqualityNot gradedmaintenanceAggregates multiple MCP servers behind a single, secure endpoint with unified tool/resource discovery, OAuth authentication, and resilient request routing. Enables users to manage and interact with multiple MCP backends through one centralized interface with load balancing and circuit breakers.2-
- FlicenseNot gradedqualityDmaintenanceA centralized gateway and router that integrates multiple MCP servers into a single endpoint with built-in policy enforcement and secret management. It features a Web GUI for managing tool access, audit logs, and multi-environment configurations across various sub-servers.-
- AlicenseNot gradedqualityBmaintenanceAggregates multiple MCP servers into a single HTTP endpoint with tool namespacing, dashboard, and REST API for management.32 npmMIT
- AlicenseNot gradedqualityCmaintenanceAggregates multiple MCP servers into a single unified endpoint with hot-plugging, multi-protocol support, and management via web and CLI.7 npmMIT