n8n MCP Server
Этот репозиторий содержит реализацию сервера Model Context Protocol (MCP) на базе FastAPI, который позволяет инструментам ChatGPT управлять рабочими процессами n8n через официальный REST API.
Возможности
- SSE-интерфейс
/mcp/requestдля взаимодействия в формате MCP. - Поддерживаемые методы:
list_workflows—GET /rest/workflowscreate_workflow—POST /rest/workflowsupdate_workflow—PATCH /rest/workflows/{id}delete_workflow—DELETE /rest/workflows/{id}run_workflow—POST /rest/workflows/runget_execution_status—GET /rest/executions/{id}
- Асинхронный HTTP-клиент
httpx.AsyncClientс поддержкой API-ключей n8n. - Pydantic-схемы для строгой валидации MCP-запросов и ответов.
- Логирование входящих запросов и обращений к n8n.
Требования
- Python 3.10 или новее.
- Запущенный экземпляр n8n с доступом по HTTP и включённым REST API.
- API-токен n8n с правами на чтение и изменение workflow.
Установка и запуск
-
Клонируйте репозиторий и перейдите в директорию проекта:
git clone https://github.com/Peakviker/MCPn8n.git cd MCPn8n -
Создайте виртуальное окружение и установите зависимости:
python -m venv .venv source .venv/bin/activate pip install fastapi uvicorn[standard] sse-starlette httpx python-dotenv -
Скопируйте пример конфигурации и задайте переменные окружения:
cp .env.example .env # отредактируйте значения по необходимостиДоступные параметры:
Переменная Описание Значение по умолчанию N8N_URLБазовый URL REST API n8n http://localhost:5678/api/v1/N8N_API_KEYAPI-токен n8n пусто (анонимный доступ) N8N_TIMEOUTТаймаут HTTP-запросов в секундах 30.0 -
Запустите сервер MCP:
uvicorn mcp_server:app --reload --port 8080 -
Проверьте, что сервер отвечает:
curl http://localhost:8080/healthz curl http://localhost:8080/mcp/discover
Использование MCP-инструментов
POST /mcp/request принимает JSON вида:
{
"id": "<уникальный идентификатор запроса>",
"method": "list_workflows",
"params": { "limit": 20 }
}
Ответ поступает по SSE в виде событий result или error. Поле result содержит MCP-структуру json_schema с данными, полученными от n8n.
Пример запуска workflow
curl -N \
-H "Content-Type: application/json" \
-X POST http://localhost:8080/mcp/request \
-d '{
"id": "demo-run",
"method": "run_workflow",
"params": {
"workflow_id": "123",
"payload": {
"runData": {
"HTTP Trigger": [[ { "json": { "foo": "bar" } } ]]
},
"startNodes": ["HTTP Trigger"],
"destinationNode": "Respond to Webhook"
}
}
}'
Чтобы отслеживать выполнение, используйте метод get_execution_status с идентификатором, возвращённым n8n при запуске.
Разработка
- Все основные настройки находятся в
mcp_server.py. - При добавлении новых методов обновляйте словарь
METHOD_PARAM_MODELSи класс клиентаN8nClient. - Логирование настроено на уровень
INFO. При необходимости измените уровень, передав значение черезlogging.basicConfig.
Лицензия
Добавьте файл LICENSE при необходимости.
