iaiops —— 工业数据接入 + 智能排障
一个受管控的 MCP 服务器,暴露 66 个工具,覆盖 8 种工业协议,并包含跨协议智能层。每个工具都经由 iaiops 治理框架(审计/预算/风险分级/撤销)运行。只读优先。 6 个写入工具按变更管理(MOC)进行管控:risk=HIGH, dry_run=True 默认,CLI 需二次确认,变更前值会捕获以支持撤销。禁止在未授权情况下向生产控制系统写入。 支持预览/模拟或仿真验证——请在实际设备上核实。从 protocols_supported 查看配置,然后用 <协议> doctor 测试连接。
何时路由至此
任务提及:OPC-UA / opc.tcp, Modbus, Siemens S7 / S7-1200/1500, Mitsubishi / MELSEC, MTConnect / CNC 机床监控, MQTT / Sparkplug B / 统一命名空间, Allen-Bradley / ControlLogix / CompactLogix / EtherNet-IP, EtherCAT / CoE / SDO / PDO / SOEM, OEE / 停机, OT 资产清单, “无数据/标签卡死”诊断, 报警泛滥 / ISA-18.2。
各协议工具
OPC-UA(只读)—— opc.tcp 端点
opcua_server_info—— 状态、构建信息、命名空间数组opcua_browse—— 从节点 ID 浏览节点树(限定深度)opcua_read_node—— 值 + 数据类型 + 源时间戳 + 状态码opcua_read_many—— 批量读取节点 ID(有界)opcua_subscribe_sample—— 有界采样,然后返回(不会循环)opcua_read_alarms—— 尽力尝试获取活动报警/条件opcua_read_history—— 历史访问(HDA):在 [开始,结束] 窗口内的原始历史数据health_summary—— 根据警告/报警阈值对节点 ID 进行分类anomaly_scan—— 对某个节点进行采样,标记统计异常值
Modbus-TCP(此处只读)
modbus_read_holding(FC03),modbus_read_input(FC04),modbus_read_coils(FC01),modbus_read_discrete(FC02) —— 带解码提示modbus_health_summary—— 根据阈值对寄存器分类
Siemens S7comm(pyS7;S7-300/400/1200/1500)
s7_cpu_info—— CPU 标识 + 运行/停止状态s7_read_area—— 从 S7 内存区域读取 N 个指定类型的项s7_read_db—— 从数据块读取 N 项s7_read_many—— 批量读取原始 pyS7 地址字符串s7_write_db—— [写入][高][变更管理] 向 DB 写入一个值(默认关闭)
Mitsubishi MC(pymcprotocol 3E;Q/L/iQ)
mc_cpu_status—— MELSEC CPU 类型/代码mc_read_words/mc_read_bits—— 从首设备批量读取字/位设备mc_read_many—— 一次请求中随机读取分散的字 + 双字mc_write_words—— [写入][高][变更管理] 写入字(默认关闭)
MTConnect(只读;所有 CNC 机床)
mtconnect_probe—— 设备模型(设备 → 组件 → 数据项)mtconnect_current—— 每个数据项的最新值(设备快照)mtconnect_sample—— 最近观测数据的有界流mtconnect_assets—— 切削刀具/夹具/程序mtconnect_oee_snapshot—— 可用性/执行/模式/程序(OEE 输入)
MQTT / Sparkplug B / UNS(paho-mqtt;完整 Tahu protobuf 解码)
mqtt_read_topic—— 普通 MQTT 有界消息收集sparkplug_decode_payload—— 将一条原始 Sparkplug B 载荷解码为指标sparkplug_subscribe_sample—— 有界采样,完整解码(包含出生/死亡/序列号)sparkplug_node_list—— 边缘节点/设备 + 在线状态 + 主主机状态uns_browse—— 在某个过滤器下浏览实时主题树(UNS)(有界)mqtt_publish—— [写入][高][变更管理] 向主题发布/发送命令(默认关闭)
Allen-Bradley EtherNet/IP(pycomm3;ControlLogix/CompactLogix)
eip_controller_info—— 控制器标识(验证 CIP 链路)eip_list_tags—— 发现控制器标签列表(名称/类型/结构)eip_read_tag—— 读取一个标签(或数组元素)及其类型eip_read_many—— 批量读取(自动多包)eip_write_tag—— [写入][高][变更管理] 写入一个标签值(默认关闭)
EtherCAT(pysoem/SOEM;Linux + root/CAP_NET_RAW + 专用网卡 + 真实从站)
可选额外安装 pip install iaiops[ethercat];无软件仿真器(仅限硬件,不支持 macOS)。如果缺少 pysoem/权限/网卡/总线,工具会降级为提示性错误。
ethercat_master_state—— 主站/工作计数器状态 + 预期与实际从站数量ethercat_slaves—— 总线扫描:枚举从站(ID/厂商/产品/版本/地址/AL 状态)ethercat_slave_info—— 单个从站:SM/FMMU 配置 + 对象字典摘要ethercat_read_sdo—— CoE SDO 上传(非周期性邮箱读取对象字典条目)ethercat_read_pdo—— 单个从站输入过程数据映像的循环快照ethercat_write_sdo—— [写入][高][变更管理] CoE SDO 下载(默认关闭)ethercat_set_state—— [写入][高][变更管理] AL 状态切换(可启动/停止运动;默认关闭)
跨协议智能
诊断 —— skills 伞形目录:排障
diagnose_dataflow—— 定位端点可达跳段中的“无数据”中断historian_health—— 对系列数据进行坏标签/平线/间隙检测alarm_bad_actors—— 基于事件列表的 ISA-18.2 报警泛滥分析(速率 vs <6/12/30,帕累托违规者,抖动,持续)tag_health—— 按质量不良/平线/越界/异常对标签违规者排序
分析
oee_compute—— OEE = 可用性 × 性能 × 质量downtime_events—— 检测运行→停止转换,对停歇进行分类oee_multidim—— 按设备×工件×班次聚合 OEEasset_inventory—— 主动识别端点特征(厂商/型号/固件/协议)并纳入资产登记册(主动发现,非被动 SPAN/镜像)monitor_changes—— 在有限窗口内仅捕获测点的值变化
元数据/路线图
protocols_supported—— 能力映射(协议、状态、工具、连接参数)- 路线图:EtherCAT EoE/FoE/SoE 邮箱协议;EtherNet/IP PLC-5 / SLC (PCCC)、Micro800;被动资产发现;OPC-UA 证书安全。
设置
iaiops init(交互式向导,按协议提示)写入 ~/.iaiops/config.yaml;凭据存入加密存储(~/.iaiops/secrets.enc,主密码通过 IAIOPS_MASTER_PASSWORD 提供)。运行 iaiops doctor 探测每个配置好的端点。完整的各协议参考、连接参数、仿真测试指南和 MCP JSON 示例见 README。
安全
只读优先。6 个写入工具(s7_write_db, mc_write_words, mqtt_publish, eip_write_tag, ethercat_write_sdo, ethercat_set_state)默认 dry_run=True,需要 CLI 二次确认,并从捕获的变更前值/状态记录撤销描述符。EtherCAT 状态变更可能启动或停止机器运动。未经授权不得将其指向生产控制系统。没有工具会返回机密信息。