Шлюз MCP
Английский |简体中文
Лицензия
Данный проект лицензирован в соответствии с лицензией GNU General Public License v3.0 — более подробную информацию см. в файле LICENSE .
Обзор проекта
MCP Gateway — это приложение, созданное с помощью Python. Он действует как центральный шлюз , который подключается к нескольким внутренним серверам MCP и объединяет их возможности (независимо от того, взаимодействуют ли они через протоколы Stdio или SSE). В конечном итоге он предоставляет эти объединенные возможности клиентам MCP вышестоящего уровня через унифицированную конечную точку SSE ( /sse ).
Основные преимущества:
Упрощенная настройка клиента: клиентам MCP достаточно подключиться к одному адресу шлюза MCP, чтобы получить доступ к функциям всех внутренних служб, что устраняет необходимость в индивидуальной настройке каждого внутреннего сервера.
Агрегация и оркестровка возможностей: объединяет инструменты MCP с разнообразными возможностями из разных источников, обеспечивая основу для создания более мощных, настраиваемых агентов, ориентированных на конкретные области задач.
Структура файла проекта
Встроенные MCP-серверы
Этот проект поставляется с четырьмя внутренними инструментами MCP Server, которые можно использовать напрямую и включать в config.json без дополнительной настройки:
Инструмент выполнения команд Bash ( : выполняет команды Bash в средах Linux, macOS или WSL.
Средство выполнения команд CMD Windows ( : выполняет команды CMD в средах Windows.
Средство выполнения команд Windows PowerShell ( : выполняет команды PowerShell в средах Windows.
Инструмент запросов Windows WMI ( : выполняет запросы WMI в средах Windows.
Если вы столкнулись со следующей ошибкой в среде Linux:
error: Distribution `pywin32==310 @ registry+https://pypi.org/simple` can't be installed because it doesn't have a source distribution or wheel for the current platform>Пожалуйста, удалите модуль
wmi:uv remove wmi
Установка и настройка
Этот проект написан на Python. Рекомендуется использовать uv для управления окружением и зависимостями.
Клонировать репозиторий
git clone https://github.com/trtyr/MCP-Gateway.git cd MCP-GatewayСоздать и активировать виртуальную среду
# Create virtual environment uv venv # Activate virtual environment # Linux/macOS source .venv/bin/activate # Windows (Command Prompt/PowerShell) .venv\Scripts\activateУстановить зависимости
# Install all required dependencies based on pyproject.toml uv sync
После выполнения этих шагов проект готов к запуску.
Быстрый старт
Получить помощь по проекту
Для просмотра всех доступных параметров запуска можно использовать аргумент -h или --help :
Вывод будет примерно таким:
Начать проект
Используйте uv run python main.py для запуска сервера. Вы можете указать host , port и log-level :
После запуска вы увидите богатый, улучшенный вывод консоли, подобный изображению ниже, показывающий состояние сервера, информацию о подключении и загруженные инструменты:

Подключение клиента MCP
После запуска MCP Gateway вы можете использовать любой MCP-совместимый клиент (например, Cline, Cursor, Claude Desktop или пользовательский клиент) для подключения к конечной точке SSE, предоставляемой Gateway.
Адрес по умолчанию: http://<Server_IP_Address>:9000/sse (если используется порт по умолчанию).
Пример (с использованием ChatWise Connect):
Выберите тип подключения
SSE.Введите URL-адрес SSE шлюза (например,
http://127.0.0.1:9000/sse).Нажмите
Connect.

После успешного подключения вы увидите все внутренние инструменты MCP, агрегированные через шлюз в клиенте:

Журналы
Журналы времени выполнения автоматически сохраняются в папке logs в корневом каталоге проекта. Имена файлов журналов включают временные метки и уровни журналов, что упрощает отслеживание проблем.

Файл конфигурации ( config.json )
Основной файл конфигурации config.json находится в корневом каталоге проекта. Он определяет внутренние серверы MCP, к которым MCP Gateway должен подключаться и управлять ими.
Каждая запись представляет собой внутренний сервер. Ключ — это уникальное имя, которое вы назначаете этому внутреннему серверу (это имя будет использоваться в качестве префикса для его возможностей), а значение — это объект, содержащий конфигурацию сервера.
Поддерживаются два типа подключений к внутреннему серверу:
stdio: взаимодействует с локально запущенным процессом сервера MCP через стандартный ввод/вывод (stdin/stdout).sse: взаимодействует с удаленным или локально работающим сервером MCP через протокол Server-Sent Events (SSE).
Конфигурация типа stdio
Подходит для локальных процессов сервера MCP, жизненный цикл которых должен управляться шлюзом.
Поля конфигурации:
type(обязательно): должен быть"stdio".command(обязательно): исполняемая команда, используемая для запуска процесса сервера (например,python,uv,nodeили абсолютный путь к скрипту/исполняемому файлу).args(обязательно): список аргументов (список строк), передаваемыхcommand.env(необязательно): Словарь переменных окружения (Dict[str, str]) для установки дочернего процесса. Если не указано, дочерний процесс наследует окружение Gateway.
Пример:
Как это работает: Когда запускается MCP Gateway, он использует указанную command и args (вместе с необязательным env ) для запуска дочернего процесса. Gateway взаимодействует с внутренним сервером MCP через стандартный ввод и вывод этого дочернего процесса. Когда Gateway завершает работу, он пытается завершить эти дочерние процессы.
Конфигурация типа SSE
Подходит для подключения к уже работающим серверам MCP (локальным или удаленным) или в случаях, когда шлюзу необходимо запустить локальный процесс сервера SSE перед подключением.
Поля конфигурации:
type(обязательно): должен быть"sse".url(обязательно): URL-адрес конечной точки SSE внутреннего сервера MCP (полный адрес HTTP/HTTPS).command(необязательно): если указано, шлюз выполнит эту команду при запуске для запуска локального сервера SSE.args(необязательно, только если указанаcommand): список аргументов, передаваемыхcommand.env(необязательно, только если указанаcommand): переменные среды, которые следует задать для локально запущенного дочернего процесса.
Пример 1: Подключение к уже работающему удаленному серверу SSE
Пример 2: Шлюз запускает локальный сервер SSE и подключается
Как это работает:
Указан только : шлюз напрямую пытается подключиться к указанному
url.url: Сначала шлюз используетcommandиargsдля запуска локального процесса (ожидая, что этот процесс будет прослушивать адрес и порт, соответствующиеurl). Затем он ждет в течение короткого периода (LOCAL_SSE_STARTUP_DELAY, определенный вclient_manager.py) перед попыткой подключения кurl. Когда шлюз завершает работу, он пытается завершить этот локальный процесс.
Примеры добавления конфигурации
Ниже приведены примеры того, как добавить сторонние MCP-серверы в config.json .
Пример Stdio: Драматург MCP
Предположим, вы хотите интегрировать MCP-сервер Playwright ( @playwright/mcp ).
Понять метод запуска : Playwright MCP обычно запускается с помощью
npx @playwright/mcp@latest. Это пакет Node.js, выполняемый черезnpx.Настройте :
{ // ... other server configurations ... "playwright": { "type": "stdio", "command": "npx", "args": ["@playwright/mcp@latest"] } // ... other server configurations ... }Здесь
command—npx, аargsсодержит имя и версию пакета Playwright MCP.Перезапустите шлюз : сохраните
config.jsonи перезапустите шлюз MCP.
После запуска вы должны увидеть инструменты с именем playwright/... (например, playwright/browse ) в журналах консоли и вашего клиента.



Пример SSE: ENScan_GO (локальный запуск)
Предположим, вы хотите интегрировать ENScan_GO, программу Go, которую можно запустить с помощью ./enscan --mcp и которая предоставляет службу SSE по адресу http://localhost:8080 .
Получить исполняемый файл : Загрузите исполняемый файл ENScan_GO (например,
enscan-v1.2.1-windows-amd64.exe) и поместите его в доступное место (например, в каталогservers/или в системную переменную PATH).Настройте :
{ // ... other server configurations ... "enscan": { "type": "sse", "url": "http://127.0.0.1:8080/sse", // Address ENScan_GO listens on // Note: Ensure path separators are correct on Windows, or use an absolute path "command": "servers/enscan-v1.2.1-windows-amd64.exe", // Path to the executable "args": ["--mcp"] // Startup arguments } // ... other server configurations ... }Здесь мы указываем
typeкакsse, предоставляемurlкоторый он прослушивает, и используемcommandиargsчтобы сообщить шлюзу, как запустить этот локальный сервер SSE.Перезапустите шлюз : сохраните
config.jsonи перезапустите шлюз MCP.
Сначала шлюз запустит процесс ENScan_GO, затем подключится к http://127.0.0.1:8080/sse . После запуска вы должны увидеть инструменты с именем enscan/... .

This server cannot be installed
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
MCP-шлюз
Related MCP Servers
- zlib License
 - MIT License
 - MIT License