Skip to main content
Glama

MCPGate

Легковесный MCP-шлюз — объединяйте, фильтруйте и отслеживайте свои MCP-инструменты.

MCPGate располагается между вашим MCP-клиентом (Claude Desktop, Claude Code, Cursor, VS Code) и несколькими MCP-серверами. Он предоставляет единую точку доступа MCP, давая вам гранулярный контроль над тем, какие инструменты будут доступны.

Возможности

  • Агрегация инструментов — подключайте несколько MCP-серверов, предоставляя доступ ко всем инструментам через одну точку.

  • Фильтрация инструментов — разрешайте или блокируйте конкретные инструменты для каждого сервера через простой YAML-конфиг.

  • Префиксы инструментов — автоматическое создание пространства имен (например, github.create_issue) для предотвращения конфликтов.

  • Веб-панель — страница состояния в реальном времени с отображением серверов, инструментов и журналов запросов.

  • Двойной транспорт — Stdio (для Claude Desktop) или HTTP/SSE (для удаленных клиентов).

  • Журнал аудита — каждый вызов инструмента записывается с указанием времени; опционально сохраняется в PostgreSQL.

  • Self-hosted — развертывание на Railway, Docker или локальный запуск.

Быстрый старт

Локально (stdio — для Claude Desktop)

npx mcp-gate start --config mcpgate.yaml

Добавьте в ваш claude_desktop_config.json:

{
  "mcpServers": {
    "mcpgate": {
      "command": "npx",
      "args": ["-y", "mcp-gate", "start", "--config", "/path/to/mcpgate.yaml"]
    }
  }
}

Локально (HTTP — с панелью управления)

npx mcp-gate start --config mcpgate.yaml
# Dashboard at http://localhost:3000
# MCP endpoint at http://localhost:3000/mcp

Docker

docker compose up
# Dashboard at http://localhost:3000
# Includes PostgreSQL for persistent audit trail

Или автономно:

docker run -p 3000:3000 \
  -e MCPGATE_CONFIG=$(cat mcpgate.yaml | base64 -w 0) \
  -e GITHUB_TOKEN=$GITHUB_TOKEN \
  ghcr.io/mprezz/mcpgate

Railway

Deploy on Railway

Добавьте плагин PostgreSQL для постоянного хранения журнала аудита — MCPGate автоматически обнаружит DATABASE_URL.

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

Создайте файл mcpgate.yaml:

gateway:
  name: "my-gateway"
  transport: "stdio" # stdio | http | both
  port: 3000
  toolPrefix: true # prefix tools with server name

servers:
  - name: "github"
    transport: "stdio"
    command: "npx"
    args: ["-y", "@modelcontextprotocol/server-github"]
    env:
      GITHUB_TOKEN: "${GITHUB_TOKEN}"
    tools:
      allow:
        - "create_issue"
        - "search_repos"

  - name: "filesystem"
    transport: "stdio"
    command: "npx"
    args: ["-y", "@modelcontextprotocol/server-filesystem", "/home/user"]
    tools:
      block:
        - "write_file"
        - "delete_file"

logging:
  level: "info"

Полное описание см. в mcpgate.example.yaml.

Фильтрация инструментов

Каждый сервер поддерживает allow (разрешить) или block (заблокировать) (взаимоисключающие параметры):

  • allow — доступны только эти инструменты (белый список).

  • block — доступны все инструменты, КРОМЕ этих (черный список).

  • Ничего не указано — доступны все инструменты.

Аутентификация

Добавьте токен Bearer для защиты HTTP-транспорта:

gateway:
  auth:
    token: "${MCPGATE_AUTH_TOKEN}"

Когда аутентификация настроена:

  • Все эндпоинты требуют заголовок Authorization: Bearer <token>.

  • /health остается публичным (для проверок работоспособности Railway/Docker).

  • MCP-клиенты передают токен через пользовательские заголовки в конфигурации транспорта.

Если аутентификация не настроена, все эндпоинты открыты (для локального/частного использования).

Интерполяция переменных окружения

Используйте ${VAR} или ${VAR:-default} в YAML для обращения к переменным окружения:

env:
  GITHUB_TOKEN: "${GITHUB_TOKEN}"
  API_URL: "${API_URL:-https://api.example.com}"

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

При работе в режиме HTTP, MCPGate предоставляет веб-панель по корневому URL:

  • / — страница состояния с вышестоящими серверами, инструментами и журналами запросов.

  • /api/status — JSON API для программного доступа.

  • /health — эндпоинт проверки работоспособности (для Railway/Docker).

  • /mcp — эндпоинт протокола MCP (Streamable HTTP).

Хранение данных

MCPGate записывает каждый вызов инструмента с указанием времени и информации об ошибках.

  • По умолчанию — в оперативной памяти (настройка не требуется, данные теряются при перезапуске).

  • PostgreSQL — установите переменную окружения DATABASE_URL (таблицы создаются автоматически).

# Local development with Docker Compose
docker compose up postgres -d
export DATABASE_URL=postgresql://mcpgate:mcpgate@localhost:5432/mcpgate
npx mcp-gate start --config mcpgate.yaml

Переменные окружения

Переменная

Обязательно

По умолчанию

Описание

PORT

Нет

3000

HTTP-порт (Railway устанавливает автоматически)

MCPGATE_CONFIG

Нет

YAML-конфиг в формате Base64 (для Railway/Docker)

DATABASE_URL

Нет

Строка подключения к PostgreSQL (включает постоянный журнал аудита)

LOG_LEVEL

Нет

info

debug / info / warn / error

MCPGATE_AUTH_TOKEN

Нет

Bearer-токен для HTTP-аутентификации (ссылка в YAML через ${MCPGATE_AUTH_TOKEN})

Разработка

git clone https://github.com/mprezz/mcpgate.git
cd mcpgate
npm install

npm run dev          # development with hot reload
npm run build        # compile TypeScript
npm run test         # run tests (vitest)
npm run lint         # eslint
npm run typecheck    # tsc --noEmit

Архитектура

Client (Claude, Cursor)
    │
    ▼ stdio or HTTP/SSE
┌──────────────────────────────┐
│         MCPGate              │
│                              │
│  ┌─────────────────────┐     │
│  │   Tool Registry     │     │  ← filters + namespaces tools
│  └─────────────────────┘     │
│  ┌─────────────────────┐     │
│  │   Tool Router       │     │  ← routes calls to correct server
│  └─────────────────────┘     │
│  ┌─────────────────────┐     │
│  │  Upstream Manager   │     │  ← manages server connections
│  └─────────────────────┘     │
│  ┌─────────────────────┐     │
│  │   Storage           │     │  ← memory or PostgreSQL
│  └─────────────────────┘     │
└──────────────────────────────┘
    │           │           │
    ▼           ▼           ▼
 Server A    Server B    Server C
 (GitHub)  (Filesystem)  (Custom)

Лицензия

Apache 2.0 — см. LICENSE

-
security - not tested
A
license - permissive license
-
quality - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/martin-santiago/mcpgate'

If you have feedback or need assistance with the MCP directory API, please join our Discord server