OT AIops MCP server
Governed OT tap (57 tools): OPC-UA/Modbus/S7/MC/MTConnect/MQTT/EtherNet-IP/EtherCAT.
2 stars34 downloads/wk
Reviews
Write oneNobody has reviewed OT AIops yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
OT AIops tools (59, 6 write)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
_safe_errorReturn an agent-safe error string; log full detail server-side only.
alarm_bad_actors[READ][risk=low] ISA-18.2 alarm-flood analysis over a list of alarm events.
anomaly_scan[READ] Sample a node over a bounded window and flag statistical outliers.
asset_inventory[READ][risk=low] Actively fingerprint endpoints into an asset register.
diagnose_dataflow[READ][risk=low] Localize a 'no data' break across an endpoint's reachable hops.
downtime_events[READ][risk=low] Detect running→stopped transitions and categorize stoppages.
eip_controller_info[READ][risk=low] Logix controller identity (proves the CIP link).
eip_list_tags[READ][risk=low] Discover the controller's tag list (names/types/structures).
eip_read_many[READ][risk=low] Batch-read many Logix tags in one request (auto multi-packet).
eip_read_tag[READ][risk=low] Read one Logix tag (or array element) with its type.
eip_write_tagwrite action[WRITE][risk=HIGH][MOC] Write ONE value to a Logix tag (off by default).
ethercat_master_state[READ][risk=low] Open the master on the configured NIC; report bus state.
ethercat_read_pdo[READ][risk=low] One cyclic snapshot of a slave's input process-data image.
ethercat_read_sdo[READ][risk=low] CoE SDO upload: read one object-dictionary entry (acyclic).
ethercat_set_state[WRITE][risk=HIGH][MOC] Request an AL-state transition (off by default).
ethercat_slave_info[READ][risk=low] Detail one slave: identity, SM/FMMU config, OD summary.
ethercat_slaves[READ][risk=low] Bus scan: enumerate every slave on the segment.
ethercat_write_sdowrite action[WRITE][risk=HIGH][MOC] CoE SDO download: write one OD entry (off by default).
health_summary[READ] Classify OPC-UA tag node-ids against warn/alarm thresholds.
historian_health[READ][risk=low] Bad-tag / flatline / gap detection over a provided series.
mainwrite actionRun the MCP server over stdio.
mc_cpu_status[READ][risk=low] MELSEC CPU type/code (proves the MC link is alive).
mc_read_bits[READ][risk=low] Batch-read bit devices from a head device.
mc_read_many[READ][risk=low] Random-read scattered word + dword devices in one request.
mc_read_words[READ][risk=low] Batch-read 16-bit word devices from a head device.
mc_write_wordswrite action[WRITE][risk=HIGH][MOC] Write 16-bit words from a head device (off by default).
modbus_health_summary[READ] Classify Modbus registers against warn/alarm thresholds.
modbus_read_coils[READ] Read coils (FC01) — digital outputs, read-only here.
modbus_read_discrete[READ] Read discrete inputs (FC02) — read-only digital inputs.
modbus_read_holding[READ] Read holding registers (FC03) with a decode hint.
modbus_read_input[READ] Read input registers (FC04) with a decode hint.
monitor_changes[READ][risk=low] Capture only the value CHANGES of a point over a bounded window.
mqtt_publishwrite action[WRITE][risk=HIGH][MOC] Publish/command to an MQTT topic (off by default).
mqtt_read_topic[READ][risk=low] Plain MQTT: collect a BOUNDED set of messages from a topic.
mtconnect_assets[READ][risk=low] Assets the agent knows (cutting tools, fixtures, programs).
mtconnect_current[READ][risk=low] Latest value of every data item (a snapshot of the machine now).
mtconnect_oee_snapshot[READ][risk=low] Availability / Execution / mode / program (OEE inputs).
mtconnect_probe[READ][risk=low] The device model: devices → components → data items.
mtconnect_sample[READ][risk=low] A BOUNDED stream of recent observations (history).
oee_compute[READ][risk=low] OEE = Availability × Performance × Quality from inputs.
oee_multidim[READ][risk=low] Aggregate OEE across dimensions (machine × part × shift).
opcua_browse[READ] Browse the OPC-UA node tree from a node id (bounded depth).
opcua_read_alarms[READ] Best-effort surfacing of active alarm/condition booleans.
opcua_read_history[READ] OPC-UA Historical Access (HDA): raw historical values over a window.
opcua_read_many[READ] Batch-read multiple node ids in one session (bounded count).
opcua_read_node[READ] Read one node: value, datatype, source timestamp, status code.
opcua_server_info[READ] OPC-UA server status, build info, and namespace array.
opcua_subscribe_sample[READ] Sample a node a BOUNDED number of times, then return (never loops).
protocols_supported[READ][risk=low] Capability map — protocols, status, tools, connection params.
s7_cpu_info[READ][risk=low] S7 CPU identity + run/stop status (proves the link).
s7_read_area[READ][risk=low] Read ``count`` items of a type from an S7 memory area.
s7_read_db[READ][risk=low] Read ``count`` ``dtype`` items from data block ``db``.
s7_read_many[READ][risk=low] Batch-read raw pyS7 address strings in one request.
s7_write_dbwrite action[WRITE][risk=HIGH][MOC] Write ONE value to an S7 data block (off by default).
sparkplug_decode_payload[READ][risk=low] Decode a single raw Sparkplug B payload to structured metrics.
sparkplug_node_list[READ][risk=low] Discover edge nodes/devices + online state + primary-host STATE.
sparkplug_subscribe_sample[READ][risk=low] Bounded Sparkplug B sample with full decode + birth/death/seq.
tag_health[READ][risk=low] Rank tag offenders by bad-quality / flatline / range / anomaly.
uns_browse[READ][risk=low] Browse the live topic tree (UNS) under a filter (bounded).
Public scan report
scanner v0.1.9 · 2026-09-26 · same rubric, same numbers if you re-run it
- Code scan67 source files scanned20/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitylocal package, no credentials required12/15
- Maintenancelast push 8 days ago15/15
- Maintainer identityregistry namespace matches repository owner7/10
Findings (1)
- mediumHeavily hex-escaped string (obfuscation)
obf.hex-densityot_aiops-0.3.0/ot_aiops/sparkplug_b_pb2.py: …\x80\x80\x80\x80\x02\x42\x07\n\x05value*\x08\x08\x06\x10\x80\x80\x80\x80\x02\x1a\x97\x04\n\x07\x44\x61taSet\x12\x16\n\x0enum_of_…
How OT AIops compares
Against every graded MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 83/100
- higher than 65% of 48,255 servers
- Tools
- 59
- the typical server has 7
- Tools that change things
- 10%
- typical: 0%. Fewer write tools means less an agent can break
- GitHub stars
- 2
- more than 75% of 28,688 servers
- Downloads a week
- 34
- more than 23% of 12,191 servers with a package
What its tools let an agent do: 53 read · 6 change
Install OT AIops in Claude Code, Cursor or VS Code
claude mcp add ot-aiops -- uvx ot-aiops
What the publisher says
From the OT AIops repository's README, as published. We do not edit it. Read it on GitHub
<!-- mcp-name: io.github.industrial-aiops/iaiops -->
Industrial-AIOps
English · 中文
Ask an AI agent why the line stopped — and get an answer that cites its evidence.
A vendor-neutral, read-first data tap for the factory floor. It speaks 14 field protocols, correlates what it reads across them, and hands your agent an evidence-cited verdict instead of a guess. Every call is audited, and no reading ever phones home.
pip install "iaiops[opcua]" # pick your protocol — or [all]
iaiops init # write ~/.iaiops/config.yaml
iaiops doctor # check the setup before you trust itPrefer a container? The published image is cosign-signed and runs non-root. It speaks MCP over stdio, so keep stdin open and mount a volume for the audit store:
cosign verify --key deploy/margo/cosign.pub ghcr.io/industrial-aiops/iaiops:0.28.0-factory
docker run -i --rm -v iaiops-state:/home/iaiops/.iaiops \
ghcr.io/industrial-aiops/iaiops:0.28.0-factoryFor a hardened or air-gapped deployment (read-only rootfs, capdrop: ALL, no-new-privileges, optional on-box LLM) use deploy/margo/compose.yaml and deploy/airgap/. The analysis engine needs no GPU and no model API — it is deterministic; an LLM is optional and only phrases* the verdict.
What you get
Ten per-industry editions ship in this package — fab · factory · process · building · water · warehouse · clinical · pharma · renewables · plcnext — each adding its own read-only advisory checks. Substation / utility telecontrol (IEC-104 · DNP3 · IEC-61850) ships separately as iaiops-energy.
Your first five minutes
Four commands. Only one of them touches a device, and it prints what it will send before it sends anything.
pip install "iaiops[modbus]" # pick the protocol you actually have, or [all]
iaiops onboard status # ← run this first. Contacts NOTHING.
iaiops doctor # config, secrets, reachability — and the version
iaiops readiness # every scenario, and what each gap needsonboard status answers the smaller questions you have first: which journey is this site on — reading its devices directly, or subscribing to a UNS broker its data already flows through — which step of it are you on, and what is the one command that advances it? It is derived from your store and config.yaml every time. The one thing it keeps is a namespace audit verdict, and that counts only for the broker and topic filter it was taken on and always shows its age — so edit config.yaml by hand and the answer stays true.
readiness reads your config and local store and answers one question: which scenarios can this site run today, and what does each gap need? Every gap comes with the command that closes it, ranked by how much it unlocks. No agent, no cloud, no account, and nothing on the wire.
Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
OT AIops: common questions
- Is OT AIops MCP server safe?
- Mostly: it is graded B (83/100). Read the OT AIops safety report
- How do I install OT AIops?
- It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
- Does OT AIops need an API key?
- Not as far as the registry entry and our scan can tell: no credentials are declared or required.
- Is OT AIops maintained?
- The last commit was 46 days ago (2026-09-19). The latest release is v0.3.0.
- How does OT AIops compare with other MCP servers?
- safety score 83/100 (higher than 65% of 48,255 servers); tools 59 (the typical server has 7); tools that change things 10% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.