ignition-mcp
The ignition-mcp server provides 43 tools for AI-driven access to an Inductive Automation Ignition gateway, covering diagnostics, tag management, historical data, alarms, projects, Perspective UI authoring, gateway administration, database access, and bridge management.
Diagnostics & Gateway Health
Run guided health checks, retrieve gateway info (version, uptime, edition), check/reset trial status.
Tag Operations
Browse tag trees, read up to 100 live tag values simultaneously, write values (with optional allowlist restrictions), create/update tags, and export/import tag configurations.
Historical Data
Query tag history over a time range with aggregation options; list available history providers.
Alarm Management
Query current alarm status and journal with filtering by state, priority, and source; acknowledge alarms by event UUID.
Project Management
List, get, create, delete, export, import projects, and trigger project file scans.
Perspective UI Authoring & Deployment
Bootstrap a full Perspective app in one call; list/get/upsert/delete views; validate view JSON offline; manage page/URL routing configs, session properties, style classes, and list active sessions.
Gateway Administration
List installed modules, query/filter logs, dynamically set log levels, download a full
.gwbkbackup, retrieve performance metrics, and list config resources.
Database Access
Execute Named Queries with parameters or run raw SQL (SELECTs are read-only; mutating statements require explicit confirmation).
Bridge Management
Install or upgrade the
mcp-bridgeWebDev project on the gateway; check bridge availability and version.
Safety: Tools are read-only by default; writes require explicit confirmation and can be restricted via allowlists.
Provides structured access to an Inductive Automation Ignition gateway, allowing AI assistants to browse and write tags, query history and alarms, manage projects, deploy Perspective views, and administer gateway settings.
Click on "Deploy 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 Query tag history for [default]Line1/Speed over the last hour"
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
An MCP (Model Context Protocol) server for Inductive Automation Ignition. It gives an AI assistant, Claude Desktop, Claude Code, or any MCP client, structured access to an Ignition gateway: browse and write tags, query history and alarms, manage projects, and deploy full Perspective views.
Tested against Ignition 8.3. 43 tools spanning tags, history, alarms, projects, gateway administration, and Perspective. The server is read-only by default; every write is gated behind an explicit opt-in.
You: "Deploy a Perspective dashboard to a new project called LineOverview with a
gauge bound to [default]Line1/Speed."
Claude: (bootstraps the project, writes the view, wires the tag binding, triggers a scan)
-> https://gateway:8088/data/perspective/client/LineOverviewWhy two planes
Ignition 8.3 ships a native REST API, but it doesn't expose live tag values, tag history, alarm
queries, or Perspective view resources. ignition-mcp covers the gap with two transport planes:
REST plane. The gateway's native
/data/api/v1API, authenticated with an API key, used for projects, gateway configuration, modules, logs, backups, and Perspective session diagnostics.Bridge plane. A small WebDev project (
mcp-bridge) you install once on the gateway. It exposes the gateway scripting surface (system.tag.*,system.alarm.*,system.db.*, and project file I/O) over HMAC-signed HTTP requests.
Tools that need the bridge degrade with a clear message if it isn't installed. Run
ignition_diagnose any time to see what's configured and what's missing.
Related MCP server: MCP PLC Core
Quickstart
1. Create an API key on the gateway
Gateway web UI -> Config -> Security -> API Keys -> Create. Give it a name, for example claude.
Copy the full token; it looks like claude:AbCd....
The key's auto-created security level (Authenticated/<key-name>) needs to be granted gateway
read/write access under Config -> Security -> General -> Gateway Read/Write Permissions. Skip
this step and calls return HTTP 403; ignition_diagnose will tell you and give the exact fix.
2. Install ignition-mcp
pipx install ignition-mcp
# or: uvx ignition-mcp
# or: pip install ignition-mcp3. Configure your MCP client
Claude Desktop (claude_desktop_config.json) or Claude Code (.mcp.json):
{
"mcpServers": {
"ignition": {
"command": "ignition-mcp",
"env": {
"IGNITION_URL": "http://localhost:8088",
"IGNITION_API_TOKEN": "claude:YOUR_SECRET_HERE"
}
}
}
}Restart the client and ask it to run ignition_diagnose. You should get an all-green checklist,
aside from a warning about the bridge, which is the next step.
4. Install the bridge (recommended, needed for live data and Perspective deploys)
Generate a random secret, enable writes, and let the server install the bridge for you:
"env": {
"IGNITION_URL": "http://localhost:8088",
"IGNITION_API_TOKEN": "claude:YOUR_SECRET_HERE",
"IGNITION_BRIDGE_SECRET": "a-long-random-string",
"IGNITION_ALLOW_WRITES": "true"
}Ask your assistant to install the bridge (this runs the bridge_install tool), then run
ignition_diagnose again to confirm the bridge check is green. See
docs/bridge.md for the manual install path and troubleshooting.
Configuration
Variable | Required | Default | Meaning |
| yes | none | Gateway base URL, e.g. |
| yes | none | API key, |
| no | unset | HMAC secret for the bridge; bridge tools are disabled without it |
| no |
| Master switch for every mutating tool |
| no |
| Set to |
| no |
| Per-request timeout, in seconds |
| no | unset | Comma-separated glob patterns; tag writes outside them are refused |
Safety model
Read-only by default. Mutating tools refuse to run unless
IGNITION_ALLOW_WRITES=trueand the call passesconfirm=true. Your assistant setsconfirmafter you approve the action.Destructive operations echo the name back. Deleting a project or view requires re-sending its exact name.
A tag-write allowlist lets you restrict writable tags to specific path globs.
REST mutations carry the API key's identity into Ignition's own audit log; bridge mutations log to the
mcp-bridgelogger. Secrets are never logged or echoed back.The bridge's file endpoints are confined to
data/projects/; nothing outside that tree is reachable.
Tool catalog
Area | Tools |
Diagnostics |
|
Tags |
|
History |
|
Alarms |
|
Projects |
|
Perspective |
|
Gateway admin |
|
Database |
|
Bridge |
|
The server also exposes MCP resources the assistant can read to author valid Perspective views:
ignition://docs/view-schema and ignition://templates/view/{flex-basic,coordinate-basic,tag-bound-dashboard}.
Building Perspective views
See docs/perspective-authoring.md for the full writeup. In
short: the assistant reads the view-schema resource, starts from a template, validates offline
with perspective_validate_view, then deploys with perspective_upsert_view, which validates
again, writes the view, and triggers a project scan. A full round-trip example is in
examples/deploy-dashboard.md.
Development
git clone https://github.com/jsgorana/ignition-mcp
cd ignition-mcp
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
ruff check src tests # lint
ruff format --check src tests # format check
mypy src # type check
pytest tests/unit # unit tests, no gateway needed
python bridge/build_zip.py # rebuild the bridge project archive
# Live integration suite (needs a real 8.3 gateway with the bridge installed):
IGNITION_URL=... IGNITION_API_TOKEN=... IGNITION_BRIDGE_SECRET=... \
IGNITION_ALLOW_WRITES=true python tests/live/live_check.pyAcknowledgments
Built on the Model Context Protocol and its Python SDK, using httpx for HTTP. The ignition-sdk-examples repository was a useful reference while working out how Ignition's module and scripting APIs fit together.
License
MIT. See LICENSE.
Disclaimer
This project is independent and community-built. It is not affiliated with, endorsed by, or sponsored by Inductive Automation. "Ignition" and "Perspective" are trademarks of Inductive Automation, LLC, used here only to describe compatibility. Test any write-enabled tool against a non-production gateway before pointing it at something that matters.
Available Tools
43 toolsalarm_acknowledgeC
Mutating, bridge plane. Acknowledge alarms by event UUID.
Inputs: event_ids (required), notes, confirm. Returns: object
alarm_journalB
Read-only, bridge plane. Query the alarm journal over a time range.
Inputs: start (required), end, limit, states, +1 more. Returns: object
alarm_statusA
Read-only, bridge plane. Query current alarm status.
Inputs: limit, states, min_priority, source_filter, +1 more. Returns: object
bridge_installA
Install/upgrade the mcp-bridge WebDev project on the gateway. Mutating, REST plane.
Uses IGNITION_BRIDGE_SECRET as the shared HMAC secret. After import, verifies the bridge responds to a signed ping.
Inputs: confirm. Returns: object
bridge_statusA
Report bridge availability and version. Read-only, bridge plane.
Inputs: no named parameters. Returns: object
config_resource_listC
Read-only, REST plane. Generic gateway config resource listing.
Inputs: module, resource_type. Returns: object
db_queryC
Bridge plane. SELECT statements run read-only; any other statement is mutating.
Inputs: sql (required), args, confirm, database. Returns: object
db_run_named_queryC
Read-only by default, bridge plane. Runs a project Named Query.
Inputs: project (required), query_path (required), parameters. Returns: object
gateway_backupA
Mutating-safe (heavy read), REST plane. Download a .gwbk gateway backup.
Inputs: save_to (required), confirm. Returns: object
gateway_infoA
Gateway version, edition, uptime, and health overview. Read-only, REST plane.
Inputs: no named parameters. Returns: object
gateway_logger_set_levelD
Mutating, REST plane.
Inputs: level (required), logger_name (required), confirm. Returns: object
gateway_logs_queryD
Read-only, REST plane.
Inputs: text, level, limit, logger. Returns: object
gateway_modulesD
Read-only, REST plane.
Inputs: no named parameters. Returns: object
gateway_performanceC
Read-only, REST plane.
Inputs: no named parameters. Returns: object
gateway_trial_resetB
Reset the gateway's 2-hour trial timer (trial gateways only). Mutating, bridge plane.
Inputs: confirm. Returns: object
gateway_trial_statusA
Trial/license state including seconds remaining. Read-only, REST plane.
Inputs: no named parameters. Returns: object
history_providersA
Read-only, bridge plane. List available history providers.
Inputs: no named parameters. Returns: object
history_queryC
Read-only, bridge plane. Query tag history.
Inputs: paths (required), start (required), end, aggregation, +1 more. Returns: object
ignition_diagnoseA
Guided health check: reachability, token, permissions, bridge, trial. Read-only. Run this first when anything misbehaves.
Inputs: no named parameters. Returns: object
perspective_bootstrap_projectD
Mutating, REST + bridge + scan. One-call working Perspective app.
Inputs: project (required), title, confirm. Returns: object
perspective_delete_viewD
Mutating + destructive, bridge plane + REST scan.
Inputs: project (required), view_path (required), confirm, confirm_name. Returns: object
perspective_get_viewD
Read-only, bridge plane.
Inputs: project (required), view_path (required). Returns: object
perspective_list_sessionsD
Read-only, REST plane (Perspective module API).
Inputs: no named parameters. Returns: object
perspective_list_viewsC
Read-only, bridge plane.
Inputs: project (required). Returns: object
perspective_page_config_getD
Read-only, bridge plane.
Inputs: project (required). Returns: object
perspective_page_config_setC
Mutating, bridge plane + scan. Read-modify-write: never clobber other pages.
Inputs: project (required), page_url (required), view_path (required), title, +1 more. Returns: object
perspective_session_props_getD
Read-only, bridge plane.
Inputs: project (required). Returns: object
perspective_style_upsertD
Mutating, bridge plane + scan.
Inputs: project (required), style_json (required), style_class (required), confirm. Returns: object
perspective_upsert_viewD
Mutating, bridge plane + REST scan.
Inputs: project (required), view_json (required), view_path (required), confirm. Returns: object
perspective_validate_viewC
Read-only, local (no gateway call).
Inputs: view_json (required). Returns: object
project_createC
Mutating, REST plane. Create a new project.
Inputs: name (required), title, parent, confirm, +2 more. Returns: object
project_deleteC
Mutating + destructive, REST plane. Delete a project.
Inputs: name (required), confirm, confirm_name. Returns: object
project_exportC
Read-only, REST plane. Export a project zip.
Inputs: name (required), save_to. Returns: object
project_getA
Read-only, REST plane. Get details for one project.
Inputs: name (required). Returns: object
project_importC
Mutating, REST plane. Import a project zip as project .
Inputs: name (required), zip_path (required), confirm. Returns: object
project_listA
Read-only, REST plane. List all projects.
Inputs: no named parameters. Returns: object
project_scanB
Safe trigger, REST plane. Request a scan of external project files.
Inputs: no named parameters. Returns: object
tag_browseC
Read-only, bridge plane. Browse tags/folders.
Inputs: path, depth, provider. Returns: object
tag_config_exportB
Read-only, REST plane. Export tag configuration as JSON.
Inputs: provider, base_path. Returns: object
tag_config_importC
Mutating, REST plane. Import tag configuration JSON.
Inputs: provider (required), base_path (required), tags_json (required), confirm, +1 more. Returns: object
tag_createC
Mutating, bridge plane. Create or update tags from config dicts.
Inputs: tags (required), base_path (required), confirm, collision_policy. Returns: object
tag_readB
Read-only, bridge plane. Read live values for 1-100 tag paths.
Inputs: paths (required). Returns: object
tag_writeD
Mutating, bridge plane. Each write dict: {"path": str, "value": Any}.
Inputs: writes (required), confirm. Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 43 tools
Each tool is clearly grouped by prefix (alarm_, bridge_, config_, etc.) with distinct actions. No two tools appear to overlap in purpose, and the descriptions make it easy to distinguish between tools that might seem similar (e.g., gateway_backup vs. project_export).
All tools follow a consistent snake_case verb_noun or prefix_verb_noun pattern (e.g., alarm_acknowledge, perspective_bootstrap_project, tag_read). No mixing of camelCase or inconsistent verb styles.
With 43 tools, the set is large but justified by the broad domain covering gateway management, projects, Perspective UI, alarms, tags, databases, and more. While slightly above the typical well-scoped range, each tool addresses a distinct functionality within Ignition.
The tool set covers CRUD and lifecycle operations for most major areas (projects, tags, perspectives, gateway configuration). Minor omissions exist (e.g., no tag_delete, no alarm creation), but the overall surface is comprehensive for the domain.
Maintenance
Related MCP Connectors
Hosted MCP server connecting AI assistants to 9,000+ apps and 40,000+ actions via Zapier.
MCP server for OpenAI API (chat completions, image generation, embeddings) via AceDataCloud
MCP server that lets AI assistants use all OneSchema features exposed via the public API.
MCP server for AI dialogue using various LLM models via AceDataCloud
Related MCP Servers
- AlicenseAqualityBmaintenanceThe 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.1713MIT
- AlicenseBqualityCmaintenanceUniversal 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.6MIT
- AlicenseAqualityDmaintenanceMCP server for industrial PLC integration, enabling AI to read tags, monitor alarms, and interact with Allen-Bradley ControlLogix PLCs via natural language.9MIT
- AlicenseAqualityBmaintenanceA comprehensive MCP server that enables AI assistants to interact with Home Assistant, control smart home devices, query states, execute services, and manage automations via natural language.77196,503 PyPI7,782MIT