ignition-mcp-server
ignition-mcp-server
The first AI-powered development tool for Ignition SCADA — an MCP server that lets any AI agent read, understand, and interact with your Ignition projects and gateways.
[!NOTE] Этот коннектор — ранний инструмент сообщества от Nodeblue. Полная система — это Nexus, наша платформа промышленного интеллекта — эти репозитории лишь её коннекторные слои.
Nexus читает и анализирует всю вашу операцию: логику ПЛК, SCADA-системы, живые данные контроллеров, документацию, историю отказов и записи MES/ERP. Он работает с оборудованием разных вендоров — Rockwell, Siemens, Ignition, семейство CODESYS и ещё более 500 брендов через PLCopen. Он диагностирует неисправности на работающей линии, хранит постоянную память об операции и отвечает простым английским языком со ссылками на источник.
Открытые коннекторы Nodeblue
Коннектор | Что делает |
Rockwell/Allen-Bradley Studio 5000 — разбор L5X-экспорта: теги, UDT, подпрограммы, AOI, перекрёстные ссылки | |
ignition-mcp-server (этот репозиторий) | Ignition SCADA — представления, сценарии, теги, UDT, аварийные сигналы, чтение/запись на работающем шлюзе |
Связывает теги Ignition SCADA с логикой ПЛК Studio 5000 от начала до конца |
Что это делает
ignition-mcp-server подключает ИИ-агентов (Claude, GPT, локальные LLM) к вашим проектам Ignition SCADA через Model Context Protocol. Он предоставляет ИИ структурированный доступ к:
Теги — просмотр иерархий тегов, фильтрация по пути к папке, просмотр типов данных и значений
Perspective Views (представления Perspective) — чтение деревьев компонентов, привязок, обработчиков событий и стилей
Сценарии — чтение сценариев библиотеки проекта и сценариев событий шлюза с информацией об области действия
UDT — перечисление и просмотр определений пользовательских типов (User Defined Type) с деталями членов
Конвейеры аварийных сигналов — чтение конфигураций уведомлений о аварийных сигналах с этапами, профилями и переходами
Именованные запросы — чтение определений SQL-запросов с параметрами, целевыми базами данных и типами
Чтение/запись тегов в реальном времени — чтение значений тегов на работающем шлюзе Ignition через WebDev; запись включается по запросу (
--enable-writes)Выполнение сценариев — запуск Python-сценариев на шлюзе в области шлюза (по запросу,
--enable-writes)История тегов — запрос исторических данных тегов с фильтрацией по временному диапазону
Работает как с экспортами проектов Ignition 8.1+ (файлы .zip), так и с проектами на файловой системе 8.3+ (прямой доступ к каталогу).
Related MCP server: ignition-mcp
Почему это существует
У Ignition — ~300,000+ установок по всему миру и ноль инструментов с ИИ — ни вендорского копилота, ни сторонних инструментов, ни академических исследований. У каждой другой крупной платформы автоматизации (Siemens, Rockwell, Schneider) есть ИИ-ассистенты. У Ignition нет ничего.
Этот сервер заполняет этот пробел. Он открытый, не зависит от конкретного агента и работает офлайн.
Создан и поддерживается Nodeblue. Эти коннекторы — ранние инструменты сообщества из нашей работы над Nexus, где эта возможность поставляется в продакшен-качестве — вместе с кросс-вендорной корреляцией, диагностикой неисправностей в реальном времени и постоянной памятью об операции.
Установка
pip install ignition-mcp-serverТребуется Python 3.10+.
Чтобы установить из исходного кода, вместо этого:
git clone https://github.com/nodeblue-ai/ignition-mcp-server.git
cd ignition-mcp-server
pip install .Быстрый старт
stdio (локально — kiro-cli, Claude Desktop, Claude Code)
ignition-mcp-serverSSE (удалённо — сервер на одной машине, агент на другой)
ignition-mcp-server --transport sse --port 8080С подключением к работающему шлюзу
ignition-mcp-server --gateway-url https://my-gateway:8088 --gateway-username admin --gateway-password changemeЭто включает read-only live-инструменты: read_tag и get_history. Требуется модуль WebDev на шлюзе с настроенными API-эндпоинтами (см. Настройка шлюза ниже).
[!WARNING] Live-запись отключена по умолчанию.
write_tagиexecute_scriptмогут изменять значения на работающей SCADA-системе и приводить в действие реальное оборудование. Чтобы включить их, вы должны явно согласиться с помощью--enable-writes:ignition-mcp-server --gateway-url https://my-gateway:8088 --enable-writesДелайте это только на непродакшн-шлюзах или если полностью понимаете, к чему подключённому ИИ-агенту разрешено прикасаться. Контролируемая, аудируемая, одобряемая человеком live-запись — часть Nexus.
Конфигурация
kiro-cli
Добавьте в ваш ~/.kiro/settings.json:
{
"mcpServers": {
"ignition": {
"command": "ignition-mcp-server",
"args": []
}
}
}С доступом к работающему шлюзу:
{
"mcpServers": {
"ignition": {
"command": "ignition-mcp-server",
"args": ["--gateway-url", "https://my-gateway:8088"]
}
}
}Claude Desktop
Добавьте в конфигурацию MCP вашего Claude Desktop:
{
"mcpServers": {
"ignition": {
"command": "ignition-mcp-server",
"args": []
}
}
}SSE (удалённо)
Запустите сервер на вашей инженерной рабочей станции:
ignition-mcp-server --transport sse --host 0.0.0.0 --port 8080Подключайтесь из любого MCP-клиента по SSE URL: http://<host>:8080/sse
Доступные инструменты
ping
Проверка состояния. Возвращает "pong".
get_tags(project_path, tag_path?, provider?)
Просмотр тегов в проекте. Можно фильтровать по пути к папке и провайдеру тегов.
get_tags("/path/to/project", "Conveyors/Line1")
get_tags("/path/to/project", "", "edge")Возвращает имена тегов, типы, типы данных, значения и документацию.
list_tag_providers(project_path)
Перечисляет все имена провайдеров тегов в проекте (например, default, edge, MQTT).
list_views(project_path)
Перечисляет все пути представлений Perspective в проекте.
get_view(project_path, view_path)
Возвращает дерево компонентов представления Perspective с привязками и событиями.
get_view("/path/to/project", "Overview")Возвращает иерархию компонентов, привязки свойств и количество обработчиков событий.
list_scripts(project_path)
Перечисляет все сценарии с их областью действия (gateway, client, all).
get_script(project_path, script_path)
Возвращает исходный код сценария проекта.
get_script("/path/to/project", "ignition/script-python/utils")list_udts(project_path)
Перечисляет все имена определений UDT (User Defined Type).
get_udt(project_path, udt_name?)
Возвращает определение(я) UDT с деталями членов, параметрами и документацией.
get_udt("/path/to/project", "Motor_UDT")list_alarms(project_path)
Перечисляет все имена конвейеров аварийных сигналов в проекте.
get_alarm(project_path, pipeline_name)
Возвращает конфигурацию конвейера аварийных сигналов, включая этапы, профили уведомлений и переходы.
get_alarm("/path/to/project", "MainAlarmPipeline")Возвращает этапы конвейера с типом (delay, notification), именами профилей уведомлений, контактной информацией, периодами консолидации и количеством переходов.
list_named_queries(project_path)
Перечисляет все имена именованных запросов в проекте.
get_named_query(project_path, query_name)
Возвращает SQL именованного запроса, параметры, подключение к базе данных и тип (Query vs Update).
get_named_query("/path/to/project", "GetActiveFaults")Возвращает текст SQL, определения параметров с типами данных и значениями по умолчанию, целевую базу данных и описание.
read_tag(tag_path)
Читает текущее значение одного или нескольких тегов с работающего шлюза. Для нескольких тегов используйте разделение запятыми.
read_tag("[default]Conveyors/Line1/Speed")
read_tag("[default]Conveyors/Line1/Speed, [default]Conveyors/Line1/Running")Требует --gateway-url при запуске.
write_tag(tag_path, value)
Записывает значение в тег на работающем шлюзе. Автоматически обрабатывает приведение к булевому/числовому типу.
write_tag("[default]Conveyors/Line1/Speed", "1800")Отключено по умолчанию. Требует --gateway-url и --enable-writes при запуске.
execute_script(code)
Выполняет Python-сценарий на шлюзе Ignition в области шлюза (gateway scope).
execute_script("system.tag.readBlocking(['[default]Conveyors/Line1/Speed'])")Отключено по умолчанию. Требует --gateway-url и --enable-writes при запуске.
get_history(tag_path, start, end)
Запрашивает исторические данные тегов из историзатора шлюза.
get_history("[default]Conveyors/Line1/Speed", "2026-04-12T00:00:00Z", "2026-04-12T12:00:00Z")Требует --gateway-url при запуске.
Поддерживаемые форматы проектов
Формат | Как использовать |
Каталог проекта (8.1+ или 8.3+) | Укажите |
Экспорт проекта ( | Укажите |
Файловая система 8.3 | Укажите путь к |
Пример диалога
You: What tags are under the Conveyors folder?
Agent calls: get_tags("/projects/MyPlant", "Conveyors")
Agent: The Conveyors folder contains 2 items:
- Line1 (Folder) — 3 child tags: Running (Boolean), Speed (Float4), Faulted (Boolean)
- Line2_Motor (UDT Instance) — type: Motor_UDT
You: What does the Motor_UDT look like?
Agent calls: get_udt("/projects/MyPlant", "Motor_UDT")
Agent: Motor_UDT has 3 members:
- Running (Boolean) — Motor running status
- Faulted (Boolean) — Motor fault status
- Speed_RPM (Float4) — Motor speed in RPM
Parameters: MotorName (String)
You: Show me the Overview view
Agent calls: get_view("/projects/MyPlant", "Overview")
Agent: The Overview view has a flex container with 3 children:
1. titleLabel (ia.display.label) — bound to view.params.title
2. speedDisplay (ia.display.led-display) — bound to tag [default]Conveyors/Line1/Speed
3. startButton (ia.input.button) — has 1 onClick event handlerНастройка шлюза
Live-инструменты (read_tag, write_tag, execute_script, get_history) требуют модуль WebDev на вашем шлюзе Ignition со следующими REST-эндпоинтами:
Эндпоинт | Метод | Назначение |
| POST | Чтение значений тегов |
| POST | Запись значений тегов |
| POST | Выполнение сценариев шлюза |
| POST | Запрос истории тегов |
Пример Python-ресурса WebDev для /api/tags/read:
def doPost(request, session):
import json
body = json.loads(request["data"])
paths = body.get("tagPaths", [])
values = system.tag.readBlocking(paths)
return {
"json": [
{"path": str(v.path), "value": v.value, "quality": str(v.quality)}
for v in values
]
}См. документацию Ignition WebDev для полных инструкций по настройке.
Дорожная карта
v0.2 — Аварийные сигналы и именованные запросы ✅
list_alarms/get_alarm— разбор конфигураций конвейеров аварийных сигналовlist_named_queries/get_named_query— разбор именованных SQL-запросов с параметрами
v0.3 — Взаимодействие с работающим шлюзом в реальном времени ✅
read_tag(tag_path)/write_tag(tag_path, value)— live-взаимодействие с тегами через модуль Ignition WebDevexecute_script(code)— запуск сценариев на шлюзеget_history(tag_path, start, end)— запрос истории тегов
v0.4 — Кроссплатформенный интеллект ✅
Перекрёстная ссылка тегов Ignition с логикой ПЛК Studio 5000 L5X через bridge-mcp-server
"Этот аварийный сигнал срабатывает, когда тег X становится истинным — вот логика ПЛК, которая управляет X"
Извлечение пути OPC-элемента (
opcItemPath,opcServer) в сводках по тегам
v0.5 — Шлюз безопасности записи ✅
write_tag/execute_scriptотключены по умолчанию — включение через--enable-writesПредупреждения о безопасности в описаниях инструментов и справке CLI
Обслуживание
Публикация на PyPI (
pip install ignition-mcp-server)Поддержка новых форматов версий Ignition по мере выхода релизов
Исправление ошибок и краевых случаев из реальных экспортов проектов — приветствуются issue
Этот коннектор функционально завершён для своей области: понимание одного проекта плюс подключение к шлюзу. Разработка за пределами этой области ведётся в Nexus.
Этот коннектор и Nexus
Коннектор — это уровень доступа. Nexus — это интеллект, который находится поверх него — и поверх всех остальных коннекторов — как единая система.
Возможность | Этот коннектор | Nexus |
Разбор проектов Ignition (теги, представления, скрипты, UDT, тревоги, запросы) | ✅ | ✅ |
Чтение шлюза в реальном времени / история | ✅ | ✅ |
Запись в реальном времени | ⚠️ флаг opt-in, без аудита | ✅ с ограниченным доступом, аудитом, одобрением человека |
Кросс-вендор: Rockwell, Siemens, семейство CODESYS (500+ брендов), OPC UA | — | ✅ |
Диагностика неисправностей в реальном времени на работающей линии (первопричина, со ссылками) | — | ✅ |
Слой знаний: ваши руководства, документация SFS/DOO, история отказов — доступно для поиска, связано с логикой | — | ✅ |
Постоянная память о работе между сессиями | — | ✅ |
Генерация скриптов, каркасы представлений, генерация кода | — | ✅ |
Масштаб парка: автобнаружение, инвентаризация всего предприятия, мониторинг, оповещение | — | ✅ |
Локальная LLM / развертывание в изолированной среде | — | ✅ |
Если вы рассматриваете этот коннектор для чего-то большего, чем один проект на одном шлюзе, поговорите с нами о Nexus.
Разработка
git clone https://github.com/nodeblue-ai/ignition-mcp-server.git
cd ignition-mcp-server
pip install -e .
pip install pytest
pytest tests/ -vСтруктура проекта
src/ignition_mcp_server/
├── __init__.py
├── __main__.py # CLI entry point (stdio/SSE, gateway config)
├── server.py # FastMCP server with all 17 tool definitions
├── project_source.py # Read from .zip or directory (LRU-cached)
├── gateway_client.py # HTTP client for live Ignition WebDev API
└── parsers/
├── tags.py # Tag hierarchy parser (multi-provider)
├── views.py # Perspective view parser
├── scripts.py # Script discovery and reader
├── udts.py # UDT definition parser
├── alarms.py # Alarm pipeline parser
└── named_queries.py # Named query parser
tests/
├── test_server.py # 59 tests — parsers, project sources, error handling
├── test_gateway.py # 18 tests — live gateway tools + write gating with mock HTTP server
└── fixtures/
├── sample-project/ # Synthetic Ignition project (directory)
└── sample-project.zipУчастие
Вклад приветствуется. Это проект с открытым исходным кодом на условиях лицензии MIT.
Если у вас есть реальные экспорты проектов Ignition, которыми можно поделиться (или анонимизированные версии), они особенно ценны для тестирования крайних случаев.
Лицензия
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Flicense-qualityAmaintenanceMCP server that connects AI assistants to Siemens TIA Portal via the Openness API. AI-assisted PLC programming, project management, hardware configuration, cross-reference analysis, and deployment. 16 tools, 166 actions.27
- AlicenseCqualityCmaintenanceMCP server for Inductive Automation Ignition, enabling AI assistants to browse and write tags, query history and alarms, manage projects, and deploy Perspective views through natural language.431MIT
- AlicenseAqualityAmaintenanceAn MCP server that turns AI assistants into competent Festo/CODESYS PLC engineers by grounding them in curated, manufacturer-accurate knowledge and forcing every artifact through a machine-checked validation pipeline for CODESYS import.18451MIT
- FlicenseBqualityBmaintenanceUniversal MCP server for industrial PLC communication, enabling AI agents to read sensors, alarms, status, setpoints, and write setpoints via adapters for Modbus, S7, or custom PLCs.6
Related MCP Connectors
Self-hosted MCP gateway: turn any API, database or MCP server into AI connectors — no code.
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
An MCP server for Arcjet - the runtime security platform that ships with your AI code.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/Nodeblue-AI/ignition-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server