ignition-mcp-server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ignition-mcp-servershow me tags under Conveyors/Line1"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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.
What This Does
ignition-mcp-server connects AI agents (Claude, GPT, local LLMs) to your Ignition SCADA projects via the Model Context Protocol. It gives the AI structured access to:
Tags — browse tag hierarchies, filter by folder path, see data types and values
Perspective Views — read component trees, bindings, event handlers, and styles
Scripts — read project library scripts and gateway event scripts with scope info
UDTs — list and inspect User Defined Type definitions with member details
Alarm Pipelines — read alarm notification configurations with stages, profiles, and transitions
Named Queries — read SQL query definitions with parameters, database targets, and types
Live Tag Read/Write — read and write tag values on a running Ignition gateway via WebDev
Script Execution — run Python scripts on the gateway in gateway scope
Tag History — query historical tag data with time range filtering
Works with both Ignition 8.1+ project exports (.zip files) and 8.3+ filesystem-based projects (direct directory access).
Why This Exists
Ignition has ~300,000+ installations worldwide and zero AI tooling — no vendor copilot, no third-party tools, no academic research. Every other major automation platform (Siemens, Rockwell, Schneider) has AI assistants. Ignition has nothing.
This server fills that gap. It's open-source, agent-agnostic, and works offline.
Part of Project Automate by Nodeblue.
Installation
Install from source:
git clone https://github.com/nodeblue-ai/ignition-mcp-server.git
cd ignition-mcp-server
pip install .Requires Python 3.10+.
Note:
pip install ignition-mcp-serverfrom PyPI is coming soon. For now, install from source as shown above.
Quick Start
stdio (local — kiro-cli, Claude Desktop, Claude Code)
ignition-mcp-serverSSE (remote — server on one machine, agent on another)
ignition-mcp-server --transport sse --port 8080With live gateway connection
ignition-mcp-server --gateway-url https://my-gateway:8088 --gateway-username admin --gateway-password changemeThis enables the read_tag, write_tag, execute_script, and get_history tools. Requires the WebDev module on the gateway with API endpoints configured (see Gateway Setup below).
Configuration
kiro-cli
Add to your ~/.kiro/settings.json:
{
"mcpServers": {
"ignition": {
"command": "ignition-mcp-server",
"args": []
}
}
}With live gateway access:
{
"mcpServers": {
"ignition": {
"command": "ignition-mcp-server",
"args": ["--gateway-url", "https://my-gateway:8088"]
}
}
}Claude Desktop
Add to your Claude Desktop MCP config:
{
"mcpServers": {
"ignition": {
"command": "ignition-mcp-server",
"args": []
}
}
}SSE (remote)
Start the server on your engineering workstation:
ignition-mcp-server --transport sse --host 0.0.0.0 --port 8080Connect from any MCP client using the SSE URL: http://<host>:8080/sse
Available Tools
ping
Health check. Returns "pong".
get_tags(project_path, tag_path?, provider?)
Browse tags in the project. Optionally filter by folder path and tag provider.
get_tags("/path/to/project", "Conveyors/Line1")
get_tags("/path/to/project", "", "edge")Returns tag names, types, data types, values, and documentation.
list_tag_providers(project_path)
List all tag provider names in the project (e.g. default, edge, MQTT).
list_views(project_path)
List all Perspective view paths in the project.
get_view(project_path, view_path)
Get a Perspective view's component tree with bindings and events.
get_view("/path/to/project", "Overview")Returns component hierarchy, property bindings, and event handler counts.
list_scripts(project_path)
List all scripts with their scope (gateway, client, all).
get_script(project_path, script_path)
Get the source code of a project script.
get_script("/path/to/project", "ignition/script-python/utils")list_udts(project_path)
List all UDT (User Defined Type) definition names.
get_udt(project_path, udt_name?)
Get UDT definition(s) with member details, parameters, and documentation.
get_udt("/path/to/project", "Motor_UDT")list_alarms(project_path)
List all alarm pipeline names in the project.
get_alarm(project_path, pipeline_name)
Get an alarm pipeline's configuration including stages, notification profiles, and transitions.
get_alarm("/path/to/project", "MainAlarmPipeline")Returns pipeline stages with type (delay, notification), notification profile names, contact info, consolidation periods, and transition counts.
list_named_queries(project_path)
List all named query names in the project.
get_named_query(project_path, query_name)
Get a named query's SQL, parameters, database connection, and type (Query vs Update).
get_named_query("/path/to/project", "GetActiveFaults")Returns the SQL text, parameter definitions with data types and defaults, target database, and description.
read_tag(tag_path)
Read the current value of one or more tags from a live gateway. Comma-separate for multiple tags.
read_tag("[default]Conveyors/Line1/Speed")
read_tag("[default]Conveyors/Line1/Speed, [default]Conveyors/Line1/Running")Requires --gateway-url at startup.
write_tag(tag_path, value)
Write a value to a tag on a live gateway. Handles boolean/numeric coercion automatically.
write_tag("[default]Conveyors/Line1/Speed", "1800")Requires --gateway-url at startup.
execute_script(code)
Execute a Python script on the Ignition gateway in gateway scope.
execute_script("system.tag.readBlocking(['[default]Conveyors/Line1/Speed'])")Requires --gateway-url at startup.
get_history(tag_path, start, end)
Query historical tag data from the gateway's historian.
get_history("[default]Conveyors/Line1/Speed", "2026-04-12T00:00:00Z", "2026-04-12T12:00:00Z")Requires --gateway-url at startup.
Supported Project Formats
Format | How to Use |
Project directory (8.1+ or 8.3+) | Point |
Project export ( | Point |
8.3 filesystem | Point to |
Example Conversation
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 handlerGateway Setup
The live tools (read_tag, write_tag, execute_script, get_history) require the WebDev module on your Ignition gateway with the following REST endpoints:
Endpoint | Method | Purpose |
| POST | Read tag values |
| POST | Write tag values |
| POST | Execute gateway scripts |
| POST | Query tag history |
Example WebDev Python resource for /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
]
}See the Ignition WebDev docs for full setup instructions.
Roadmap
v0.2 — Alarms & Named Queries ✅
list_alarms/get_alarm— parse alarm pipeline configurationslist_named_queries/get_named_query— parse SQL named queries with parameters
v0.3 — Live Gateway Interaction ✅
read_tag(tag_path)/write_tag(tag_path, value)— live tag interaction via Ignition WebDev moduleexecute_script(code)— run scripts on the gatewayget_history(tag_path, start, end)— query tag history
v0.4 — Cross-Platform Intelligence ✅
Cross-reference Ignition tags with Studio 5000 L5X PLC logic via bridge-mcp-server
"This alarm fires when tag X goes true — here's the PLC logic that drives X"
OPC item path extraction (
opcItemPath,opcServer) in tag summaries
Future
RAG pipeline over Ignition documentation + project corpus
Ignition script generation (gateway timer scripts, Perspective bindings)
Perspective view scaffolding from natural language descriptions
Local LLM support for air-gapped deployments
Development
git clone https://github.com/nodeblue-ai/ignition-mcp-server.git
cd ignition-mcp-server
pip install -e .
pip install pytest
pytest tests/ -vProject Structure
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 # 13 tests — live gateway tools with mock HTTP server
└── fixtures/
├── sample-project/ # Synthetic Ignition project (directory)
└── sample-project.zipContributing
Contributions welcome. This is an open-source project under MIT license.
If you have real Ignition project exports you can share (or anonymized versions), those are especially valuable for testing edge cases.
License
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
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