ignition-mcp-server
ignition-mcp-server
La primera herramienta de desarrollo impulsada por IA para Ignition SCADA: un servidor MCP que permite a cualquier agente de IA leer, comprender e interactuar con tus proyectos y gateways de Ignition.
[!NOTE] Este conector es una herramienta comunitaria temprana de Nodeblue. El sistema completo es Nexus, nuestra plataforma de inteligencia industrial: estos repositorios son solo sus capas de conexión.
Nexus lee y razona sobre toda tu operación: lógica PLC, sistemas SCADA, datos de controladores en vivo, documentación, historial de fallos y registros MES/ERP. Funciona con múltiples fabricantes — Rockwell, Siemens, Ignition, la familia CODESYS y más de 500 marcas adicionales a través de PLCopen. Diagnostica fallos en la línea en funcionamiento, mantiene una memoria persistente de la operación y responde en inglés sencillo, citando la fuente.
Los conectores de código abierto de Nodeblue
Conector | Qué hace |
Rockwell/Allen-Bradley Studio 5000 — analiza exportaciones L5X: tags, UDTs, rutinas, AOIs, referencias cruzadas | |
ignition-mcp-server (este repo) | Ignition SCADA — vistas, scripts, tags, UDTs, alarmas, lectura/escritura en vivo del gateway |
Correlaciona los tags de Ignition SCADA con la lógica PLC de Studio 5000 de extremo a extremo |
Qué hace esto
ignition-mcp-server conecta agentes de IA (Claude, GPT, LLMs locales) con tus proyectos de Ignition SCADA mediante el Model Context Protocol. Proporciona a la IA acceso estructurado a:
Tags — explora jerarquías de tags, filtra por ruta de carpeta, consulta tipos de datos y valores
Perspective Views — lee árboles de componentes, bindings, manejadores de eventos y estilos
Scripts — lee scripts de la biblioteca del proyecto y scripts de eventos del gateway con información de alcance
UDTs — lista e inspecciona definiciones de UDT con detalles de los miembros
Alarm Pipelines — lee configuraciones de notificación de alarmas con etapas, perfiles y transiciones
Named Queries — lee definiciones de consultas SQL con parámetros, bases de datos de destino y tipos
Live Tag Read/Write — lee valores de tags en un gateway de Ignition en ejecución mediante WebDev; las escrituras son opcionales (
--enable-writes)Script Execution — ejecuta scripts de Python en el gateway en el alcance de gateway (opcional,
--enable-writes)Tag History — consulta datos históricos de tags con filtrado por rango de tiempo
Funciona tanto con exportaciones de proyectos de Ignition 8.1+ (archivos .zip) como con proyectos basados en sistema de archivos 8.3+ (acceso directo al directorio).
Related MCP server: ignition-mcp
Por qué existe
Ignition tiene ~300,000+ instalaciones en todo el mundo y cero herramientas de IA — ningún copiloto de proveedor, ninguna herramienta de terceros, ninguna investigación académica. Todas las demás plataformas de automatización importantes (Siemens, Rockwell, Schneider) tienen asistentes de IA. Ignition no tiene nada.
Este servidor llena ese vacío. Es de código abierto, independiente del agente y funciona sin conexión.
Construido y mantenido por Nodeblue. Estos conectores son herramientas comunitarias tempranas de nuestro trabajo en Nexus, donde esta capacidad se entrega con calidad de producción, junto con correlación entre fabricantes, diagnóstico de fallos en vivo y una memoria persistente de la operación.
Instalación
pip install ignition-mcp-serverRequiere Python 3.10+.
Para instalar desde el código fuente en su lugar:
git clone https://github.com/nodeblue-ai/ignition-mcp-server.git
cd ignition-mcp-server
pip install .Inicio rápido
stdio (local — kiro-cli, Claude Desktop, Claude Code)
ignition-mcp-serverSSE (remoto — servidor en una máquina, agente en otra)
ignition-mcp-server --transport sse --port 8080Con conexión de gateway en vivo
ignition-mcp-server --gateway-url https://my-gateway:8088 --gateway-username admin --gateway-password changemeEsto habilita las herramientas en vivo de solo lectura: read_tag y get_history. Requiere el módulo WebDev en el gateway con los endpoints de API configurados (consulta Configuración del gateway a continuación).
[!WARNING] Las escrituras en vivo están deshabilitadas por defecto.
write_tagyexecute_scriptpueden cambiar valores en un sistema SCADA en ejecución y accionar equipos reales. Para habilitarlas, debes aceptar explícitamente con--enable-writes:ignition-mcp-server --gateway-url https://my-gateway:8088 --enable-writesHazlo solo contra gateways de no producción, o cuando comprendas completamente lo que el agente de IA conectado tiene permitido tocar. Las escrituras en vivo controladas, auditadas y aprobadas por humanos son parte de Nexus.
Configuración
kiro-cli
Añade a tu ~/.kiro/settings.json:
{
"mcpServers": {
"ignition": {
"command": "ignition-mcp-server",
"args": []
}
}
}Con acceso al gateway en vivo:
{
"mcpServers": {
"ignition": {
"command": "ignition-mcp-server",
"args": ["--gateway-url", "https://my-gateway:8088"]
}
}
}Claude Desktop
Añade a la configuración MCP de tu Claude Desktop:
{
"mcpServers": {
"ignition": {
"command": "ignition-mcp-server",
"args": []
}
}
}SSE (remoto)
Inicia el servidor en tu estación de trabajo de ingeniería:
ignition-mcp-server --transport sse --host 0.0.0.0 --port 8080Conéctate desde cualquier cliente MCP usando la URL SSE: http://<host>:8080/sse
Herramientas disponibles
ping
Comprobación de salud. Devuelve "pong".
get_tags(project_path, tag_path?, provider?)
Explora los tags del proyecto. Opcionalmente filtra por ruta de carpeta y proveedor de tags.
get_tags("/path/to/project", "Conveyors/Line1")
get_tags("/path/to/project", "", "edge")Devuelve nombres de tags, tipos, tipos de datos, valores y documentación.
list_tag_providers(project_path)
Lista todos los nombres de proveedores de tags del proyecto (por ejemplo, default, edge, MQTT).
list_views(project_path)
Lista todas las rutas de vistas de Perspective del proyecto.
get_view(project_path, view_path)
Obtiene el árbol de componentes de una vista de Perspective con sus bindings y eventos.
get_view("/path/to/project", "Overview")Devuelve la jerarquía de componentes, los bindings de propiedades y el recuento de manejadores de eventos.
list_scripts(project_path)
Lista todos los scripts con su alcance (gateway, client, all).
get_script(project_path, script_path)
Obtiene el código fuente de un script del proyecto.
get_script("/path/to/project", "ignition/script-python/utils")list_udts(project_path)
Lista todos los nombres de definiciones de UDT (User Defined Type).
get_udt(project_path, udt_name?)
Obtiene la(s) definición(es) de UDT con detalles de los miembros, parámetros y documentación.
get_udt("/path/to/project", "Motor_UDT")list_alarms(project_path)
Lista todos los nombres de pipelines de alarmas del proyecto.
get_alarm(project_path, pipeline_name)
Obtiene la configuración de un pipeline de alarmas, incluyendo etapas, perfiles de notificación y transiciones.
get_alarm("/path/to/project", "MainAlarmPipeline")Devuelve las etapas del pipeline con tipo (delay, notification), nombres de perfiles de notificación, información de contacto, períodos de consolidación y recuentos de transiciones.
list_named_queries(project_path)
Lista todos los nombres de consultas nombradas del proyecto.
get_named_query(project_path, query_name)
Obtiene el SQL, los parámetros, la conexión de base de datos y el tipo (Query vs Update) de una consulta nombrada.
get_named_query("/path/to/project", "GetActiveFaults")Devuelve el texto SQL, las definiciones de parámetros con tipos de datos y valores predeterminados, la base de datos de destino y la descripción.
read_tag(tag_path)
Lee el valor actual de uno o más tags desde un gateway en vivo. Separa con comas para varios tags.
read_tag("[default]Conveyors/Line1/Speed")
read_tag("[default]Conveyors/Line1/Speed, [default]Conveyors/Line1/Running")Requiere --gateway-url al iniciar.
write_tag(tag_path, value)
Escribe un valor en un tag de un gateway en vivo. Maneja la coerción booleana/numérica automáticamente.
write_tag("[default]Conveyors/Line1/Speed", "1800")Deshabilitado por defecto. Requiere --gateway-url y --enable-writes al iniciar.
execute_script(code)
Ejecuta un script de Python en el gateway de Ignition en el alcance de gateway.
execute_script("system.tag.readBlocking(['[default]Conveyors/Line1/Speed'])")Deshabilitado por defecto. Requiere --gateway-url y --enable-writes al iniciar.
get_history(tag_path, start, end)
Consulta datos históricos de tags desde el historiador del gateway.
get_history("[default]Conveyors/Line1/Speed", "2026-04-12T00:00:00Z", "2026-04-12T12:00:00Z")Requiere --gateway-url al iniciar.
Formatos de proyecto compatibles
Formato | Cómo usarlo |
Directorio del proyecto (8.1+ o 8.3+) | Apunta |
Exportación del proyecto ( | Apunta |
Sistema de archivos 8.3 | Apunta a |
Ejemplo de conversación
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 handlerConfiguración del gateway
Las herramientas en vivo (read_tag, write_tag, execute_script, get_history) requieren el módulo WebDev en tu gateway de Ignition con los siguientes endpoints REST:
Endpoint | Método | Propósito |
| POST | Leer valores de tags |
| POST | Escribir valores de tags |
| POST | Ejecutar scripts del gateway |
| POST | Consultar historial de tags |
Ejemplo de recurso Python de WebDev para /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
]
}Consulta la documentación de Ignition WebDev para obtener instrucciones completas de configuración.
Hoja de ruta
v0.2 — Alarmas y Named Queries ✅
list_alarms/get_alarm— analiza configuraciones de pipelines de alarmaslist_named_queries/get_named_query— analiza consultas SQL nombradas con parámetros
v0.3 — Interacción con el gateway en vivo ✅
read_tag(tag_path)/write_tag(tag_path, value)— interacción de tags en vivo mediante el módulo WebDev de Ignitionexecute_script(code)— ejecuta scripts en el gatewayget_history(tag_path, start, end)— consulta el historial de tags
v0.4 — Inteligencia multiplataforma ✅
Cruzar referencias de los tags de Ignition con la lógica PLC de Studio 5000 L5X mediante bridge-mcp-server
"Esta alarma se dispara cuando el tag X se activa — esta es la lógica PLC que impulsa X"
Extracción de rutas de ítems OPC (
opcItemPath,opcServer) en los resúmenes de tags
v0.5 — Puerta de seguridad de escritura ✅
write_tag/execute_scriptdeshabilitados por defecto — actívelos con--enable-writesAdvertencias de seguridad en las descripciones de las herramientas y en la ayuda de la CLI
Mantenimiento
Publicación en PyPI (
pip install ignition-mcp-server)Soporte de nuevos formatos de versión de Ignition a medida que se publiquen
Correcciones de errores y casos límite de exportaciones reales de proyectos — issues bienvenidos
Este conector está completo en funcionalidad para su alcance: comprensión de un solo proyecto más conectividad con el gateway. El desarrollo más allá de ese alcance ocurre en Nexus.
Este conector vs. Nexus
El conector es la capa de acceso. Nexus es la inteligencia que se sitúa sobre él — y sobre todos los demás conectores — como un solo sistema.
Capacidad | Este conector | Nexus |
Analizar proyectos de Ignition (etiquetas, vistas, scripts, UDTs, alarmas, consultas) | ✅ | ✅ |
Lectura de gateway en vivo / historial | ✅ | ✅ |
Escrituras en vivo | ⚠️ indicador opcional, no auditado | ✅ restringido, auditado, aprobado por humanos |
Multi-vendedor: Rockwell, Siemens, familia CODESYS (más de 500 marcas), OPC UA | — | ✅ |
Diagnóstico de fallos en vivo en la línea en funcionamiento (causa raíz, con citas) | — | ✅ |
Capa de conocimiento: tus manuales, documentos SFS/DOO, historial de fallos — buscable, vinculado a la lógica | — | ✅ |
Memoria persistente de la operación entre sesiones | — | ✅ |
Generación de scripts, andamiaje de vistas, generación de código | — | ✅ |
Escala de flota: descubrimiento automático, inventario de toda la planta, monitoreo, alarmas | — | ✅ |
LLM local / despliegue aislado | — | ✅ |
Si estás evaluando este conector para algo más que un solo proyecto en un solo gateway, habla con nosotros sobre Nexus.
Desarrollo
git clone https://github.com/nodeblue-ai/ignition-mcp-server.git
cd ignition-mcp-server
pip install -e .
pip install pytest
pytest tests/ -vEstructura del proyecto
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.zipContribuciones
Las contribuciones son bienvenidas. Este es un proyecto de código abierto bajo licencia MIT.
Si tienes exportaciones reales de proyectos de Ignition que puedas compartir (o versiones anonimizadas), son especialmente valiosas para probar casos límite.
Licencia
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