Industrial MCP servers with writes gated
As of 3 November 2026, 14 of 21 industrial MCP servers gate writes behind a flag, a setting, or an allow-list. A gated write is still a write once you arm it.
- Ignition MCP ModuleInductive Automation
Inductive Automation's early-access gateway module. You define the tools; the module does not ship a protocol driver.
Early access announced on the Inductive Automation forum. It needs an Ignition nightly until Ignition 8.3.5, speaks MCP over streamable HTTP, and adds Designer resources for tools, resources, and prompts that you script. The forum post says the module itself provides no primitives and is not an out-of-the-box solution. Ignition is commercially licensed. Whether the module runs on Maker edition was not stated. The community project JonathanGrocott/ignition-mcp is unofficial and ships its own tool list.
Verified 2026-11-03
- ignition-mcp (community)Jonathan Grocott
Unofficial Ignition 8.3 module with a fixed tool list for tags, projects, alarms, and gated writes.
Not from Inductive Automation. README for 0.4.0 describes 42 tools: tag browse and read, Perspective inspection, gateway status, named queries, alarms, and preview/apply for a limited set of resource changes. It tells you to start read-only. GitHub reported no license file on 2026-11-03, so public source is not an open-source grant. Read the repo before you install the module on a gateway.
Verified 2026-11-03
- IndustriConnect BACnet MCPIndustriAgents · BACnet
BACnet/IP client for Who-Is discovery and property reads and writes, with a mock device.
Uses bacpypes3 on the local subnet. Useful for HVAC and building controllers, not for PLC logic. Writes are gated. BACnet discovery will see every device that answers; point it at a lab VLAN.
Verified 2026-11-03
- IndustriConnect DNP3 MCPIndustriAgents · DNP3
DNP3 master for outstations and serial-to-TCP gateways, with a mock outstation.
Python master using dnp3py. IndustriAgents says CI also tests against an OpenDNP3 outstation. This is a utility/SCADA protocol. Operate and select-before-operate commands are control, so leave the write switch off until you mean it.
Verified 2026-11-03
- IndustriConnect EtherCAT MCPIndustriAgents · EtherCAT
PySOEM EtherCAT master exposed as MCP tools. Hardware use is not claimed as done.
Needs a raw network interface and elevated privileges (root, or CAP_NET_RAW and CAP_NET_ADMIN). IndustriAgents says it has not yet been run on hardware. The mock slave is for local smoke tests. Do not put an unfinished EtherCAT master on a machine network.
Verified 2026-11-03
- IndustriConnect EtherNet/IP MCPIndustriAgents · EtherNet/IP
Logix tag client for ControlLogix, CompactLogix, and Micro800, using pycomm3, plus a JSON mock.
Reads and, if you arm it, writes named tags, arrays, strings, and batches, and can list the tag database. The mock is a JSON bridge, not a real PLC, and needs ENIP_JSON_BRIDGE. Writes are off by default. Tag writes on a running Logix controller are process writes. Keep this on a lab network.
Verified 2026-11-03
- IndustriConnect Modbus MCPIndustriAgents · Modbus
Open-source Modbus TCP, UDP, and RTU client for MCP hosts, with a mock device and writes off by default.
MIT-licensed server in the IndustriConnect suite. Reads registers and coils, including typed and named values. The mock server ships a register map so you can try it without a meter. Writes stay off until you set the documented switch. A register number is not a meaning: bring your own map or you will mis-scale a float.
Verified 2026-11-03
- IndustriConnect MQTT / Sparkplug MCPIndustriAgents · MQTT / Sparkplug
MQTT client that publishes, subscribes, and decodes Sparkplug B instead of handing the model raw bytes.
MIT server for any MQTT 3.1.1 broker, with Sparkplug B encode and decode. The mock edge nodes need a separate broker such as Mosquitto. Publishing is a write: it stays gated. This is one of the few public servers that actually implements Sparkplug rather than plain MQTT.
Verified 2026-11-03
- IndustriConnect OPC UA MCPIndustriAgents · OPC UA
Python and Node OPC UA MCP servers with the same tools: browse, read, history, alarms, and gated writes.
One stdio process targets one OPC UA endpoint. Writes and method calls need an operator profile, an allowlist, and an authenticated server (pinned certificate or a trust store). Published as opcua-mcp-server for Node and Python. A mock plant is in the repo. Do not confuse this with kukapay/opcua-mcp, which exposes writes without that gate.
Verified 2026-11-03
- IndustriConnect PROFIBUS MCPIndustriAgents · PROFIBUS
PROFIBUS DP tooling with GSD parsing and a TCP mock. A real DP master is not implemented.
IndustriAgents marks PROFIBUS as preview. The default serial backend is not implemented. An optional pyprofibus class-1 master is described as tested only against a simulated PHY. Use PROFIBUS_BACKEND=mock. Listing it here so the gap is visible: this will not run a real DP segment.
Verified 2026-11-03
- IndustriConnect PROFINET MCPIndustriAgents · PROFINET
PROFINET DCP discovery and GSDML parsing. Cyclic I/O in the public server goes through a mock.
Discovery, naming, and IP assignment need raw sockets and are described as not yet tested on hardware. Cyclic I/O is documented only through a mock, or through a pre-commissioned Hilscher cifX card on Linux. Set PROFINET_BACKEND=mock for the JSON device. For a production line, use the PLC vendor's engineering tool or OPC UA.
Verified 2026-11-03
- IndustriConnect S7 MCPIndustriAgents · Siemens S7
S7comm client for S7-300 through S7-1500 via python-snap7, with a mock PLC for DB, I/O, and SZL tests.
Absolute addressing of data blocks, I/O, and markers, plus CPU identity and state. Port 102. Writes are disabled unless you opt in. Optimized S7-1200/1500 blocks are not the same as absolute offsets; a successful connection is not proof you are reading the variable you think. This does not open TIA Portal. For project editing, look at Eigen or a TIA-specific tool.
Verified 2026-11-03
- plctapymxc152 · Modbus, FINS, MELSEC / SLMP, Siemens S7, IEC 60870-5-104, EtherNet/IP, OPC UA
One MCP server for Modbus, FINS, MELSEC, S7, IEC 104, EtherNet/IP, and OPC UA, with protocol detection.
MIT, v0.6.2 on PyPI when checked. Install with uvx plctap. detect_device probes common ports and is read-only. plc_write and send_frame are not registered unless PLCTAP_ALLOW_WRITE=true. IEC 104 and OPC UA are read-only in this version, and the OPC UA path is documented as SecurityPolicy None for diagnosis, not as a secured session. EtherNet/IP and MELSEC SLMP share port 44818; the detector uses the response fingerprint. Author is an individual maintainer, not a vendor.
Verified 2026-11-03
- twincat-mcpeponce00 · ADS, IEC 61131-3
Unofficial MCP server over the TwinCAT Automation Interface and ADS: build, deploy, read, and write.
MIT. Not affiliated with Beckhoff. Wraps TcXaeShell and ADS so a client can build, read compile errors, deploy, run TcUnit, and read or write symbols. The README says dangerous operations need to be armed. Static analysis calls TE1200 and needs that license. This can change a target runtime. It is not TwinCAT CoAgent.
Verified 2026-11-03
This is not a safety case. The counts describe the public tool surface on each entry's last-verified date. They do not certify a server, a model, a network, or a plant. A gated write is still a write once you arm it.