Integrations
Provides Bash command execution tools for Linux environments, allowing execution of shell commands through the MCP interface.
Offers Bash command execution capabilities for macOS, enabling shell command execution through the MCP interface.
Supports integration with Node.js-based MCP servers like Playwright MCP through the stdio connection type.
Шлюз 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_server.py
) : выполняет команды Bash в средах Linux, macOS или WSL. - Средство выполнения команд CMD Windows (
cmd_server.py
) : выполняет команды CMD в средах Windows. - Средство выполнения команд Windows PowerShell (
powershell_server.py
) : выполняет команды PowerShell в средах Windows. - Инструмент запросов Windows WMI (
wmi_server.py
) : выполняет запросы WMI в средах Windows.
Если вы столкнулись со следующей ошибкой в среде Linux:
CopyПожалуйста, удалите модуль
wmi
:uv remove wmi
Установка и настройка
Этот проект написан на Python. Рекомендуется использовать uv
для управления окружением и зависимостями.
- Клонировать репозиторийCopy
- Создать и активировать виртуальную средуCopy
- Установить зависимостиCopy
После выполнения этих шагов проект готов к запуску.
Быстрый старт
Получить помощь по проекту
Для просмотра всех доступных параметров запуска можно использовать аргумент -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
. url
,command
,args
provided : Сначала шлюз использует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
. - Настройте
config.json
:ЗдесьCopycommand
—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). - Настройте
config.json
:Здесь мы указываемCopytype
как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
- GoApache 2.0
- Python
- MIT License
- PythonMIT License