Skip to main content
Glama

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

Скриншоты

Панель управления — запущенные серверы, группы, активные сессии и живая лента событий:

Панель управления MCP Gateway

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

Список серверов

Детальный вид сервера — сведения о рантайме и конечной точке, а также обозреватель инструментов для вызова инструментов прямо из 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/servers/<id>.

Группа

Упорядоченный набор серверов, представленный как один виртуальный MCP-сервер с инструментами/промптами в пространстве имён и объединёнными ресурсами. Конечная точка /mcp/groups/<id>. Неявная группа all содержит все включённые серверы.

API-ключ

Bearer-токен для /mcp/* (хранится в виде хеша, ограничен серверами/группами, опциональный срок действия). Обязателен, когда включён Требовать API-ключ.

Сессия

Один подключённый клиент (Streamable HTTP или SSE). Видна и может быть закрыта в GUI.

Административный токен

Защищает GUI и /api/*. Задаётся через GATEWAY_ADMIN_TOKEN или в настройках.

Конфигурация — это один 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 > значения по умолчанию.

Эндпоинты

Маршрут

Назначение

POST/GET/DELETE /mcp/servers/:id · /mcp/groups/:id

Конечные точки Streamable HTTP MCP

GET /mcp/servers/:id/sse + POST …/messages?sessionId= (так же для групп)

устаревшие HTTP+SSE

GET /api/health

проверка доступности (без аутентификации)

/api/servers, /api/groups, /api/keys, /api/sessions, /api/logs, /api/settings, /api/templates, /api/config/{export,import}, /api/connect/:kind/:id

административный REST API (JSON; Authorization: Bearer <admin token>, если задан)

GET /api/events

лента 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.

  • Однопроцессный режим, сессии и логи в памяти (при перезапуске сессии теряются; клиенты повторно инициализируются).

Лицензия

Apache License 2.0 — см. LICENSE и NOTICE.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    Aggregates 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
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    A 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.
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Aggregates multiple MCP servers into a single HTTP endpoint with tool namespacing, dashboard, and REST API for management.
    32 npm
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Aggregates multiple MCP servers into a single unified endpoint with hot-plugging, multi-protocol support, and management via web and CLI.
    7 npm
    MIT