MCPGate
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/mcpDocker
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/mcpgateRailway
Добавьте плагин 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Переменные окружения
Переменная | Обязательно | По умолчанию | Описание |
| Нет |
| HTTP-порт (Railway устанавливает автоматически) |
| Нет | — | YAML-конфиг в формате Base64 (для Railway/Docker) |
| Нет | — | Строка подключения к PostgreSQL (включает постоянный журнал аудита) |
| Нет |
|
|
| Нет | — | Bearer-токен для HTTP-аутентификации (ссылка в YAML через |
Разработка
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
This server cannot be installed
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