Шлюз 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:
Пожалуйста, удалите модуль
wmi
:uv remove wmi
Установка и настройка
Этот проект написан на Python. Рекомендуется использовать uv
для управления окружением и зависимостями.
- Клонировать репозиторий
- Создать и активировать виртуальную среду
- Установить зависимости
После выполнения этих шагов проект готов к запуску.
Быстрый старт
Получить помощь по проекту
Для просмотра всех доступных параметров запуска можно использовать аргумент -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
:Здесь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). - Настройте
config.json
:Здесь мы указываем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
- GoApache 2.0
- Python
- MIT License
- PythonMIT License