2026 深度分析报告

TIA Portal 的每一个 MCP 服务器,
深度解析与对比

目前有四个项目通过 MCP 将 AI 连接到 Siemens TIA Portal。我们对其源代码、架构和安全性进行了深入分析。其中一个专为生产环境构建,另外三个为开源实验项目。以下是完整的技术解析。

TIA Portal 的 MCP 生态现状

模型上下文协议 (MCP) 允许 AI 代理直接与工程工具交互。针对 Siemens TIA Portal,目前存在四种实现方案。

T-IA Connect

商业级 · 生产就绪

工业级 MCP 桥接器,拥有 369 个工具,覆盖 TIA Portal 完整生命周期:项目管理、程序块 CRUD、变量管理、HMI、在线操作、PLCSim 仿真等。持续开发,提供专业支持。

Openness API (V17–V21)

heilingbrunner/tiaportal-mcp

开源项目 · VS Code 扩展

包含 30 个 MCP 工具的 VS Code 扩展,支持项目浏览、程序块导入/导出、编译以及新的 V20 文档格式。不支持变量管理、HMI 或在线操作。自 2025 年 9 月起停止更新。

Openness API (仅限 V20)

gangsterke/Tia-Portal-MCP-server

开源项目 · 概念验证 (PoC)

极简原型,包含 12 个只读工具,用于项目浏览和变量读取。仅用一天建成,从未更新。V18 硬编码,无错误处理,无安全性保障。

Openness API (仅限 V18)

cadugrillo/s7-mcp-bridge

开源项目 · 运行时监控

采用不同方案:不通过 TIA Portal,而是直接通过 HTTPS 连接到 PLC Web API。21 个工具用于运行时监控、变量读/写和 CPU 控制。不具备工程开发能力。

PLC Web API (S7-1200/1500)

源代码深度分析

我们审查了每个项目的源代码,以评估其架构、安全性和实际可用性。以下是我们的发现。

heilingbrunner/tiaportal-mcp — 最先进的开源选择

30 个 MCP 工具 · 仅限 V20 · 自 2025 年 9 月起停止维护

这是最严肃的开源竞争对手。由 3 位贡献者历时约 4 个月(2025 年 6 月至 9 月)开发,在 GitHub 上获得 32 个 star 和 11 个 fork。同时也作为 VS Code 扩展发布。然而,该项目已停止维护超过 6 个月。

技术栈

纯 C# .NET Framework 4.8(无 Node.js 中间层)。使用官方 .NET MCP SDK (ModelContextProtocol v0.3.0-preview)。仅通过 stdio 传输(无 HTTP/SSE)。引用了 Siemens V20 NuGet 包 — 相比动态加载 DLL 这是一种更现代的方法,但被锁定在单一版本。

30 个 MCP 工具 — 功能覆盖

工具涵盖 7 个类别:连接管理 (Connect, Disconnect, GetState)、项目操作 (Open, Save, Close, GetProjectTree)、硬件检查 (GetDevices, GetDeviceInfo)、软件管理 (GetSoftwareTree, CompileSoftware)、程序块操作 (GetBlocks, ImportBlock, ExportBlock)、UDT 处理 (GetTypes, ImportType, ExportType) 以及 V20 文档格式支持 (ExportAsDocuments, ImportFromDocuments)。

对 V20 文档格式 (.s7dcl/.s7res) 的支持是一个显著特点 — 这是 Siemens 的新格式,允许以结构化、人类可读的格式导出程序块。

缺失的功能

无变量管理 — 无法读取、写入、创建或导入/导出变量
不支持 HMI/WinCC — 无画面、连接、报警或 HMI 变量支持
无在线操作 — 不支持在线 (GoOnline)、下载或实时监控
不支持 PLCSim 仿真
无程序块生成能力 — 无法创建 SCL、LAD、FBD 或 GRAPH 格式的新块
无网络/子网管理或库支持
不支持监控表 (Watch Table) 或强制表 (Force Table)
无作业 (Job) 系统 — 所有操作均为同步阻塞式

技术缺陷

缺乏 STA 线程处理

这是最关键的问题。Siemens Openness API 使用的 COM 对象要求单线程单元 (STA) 模式。如果没有正确的 STA 调度,COM 调用在并发负载下可能会导致数据损坏或随机崩溃。这使得该工具无法可靠地用于任何自动化流水线。

单体式架构

Portal.cs 文件包含 2,300 行代码,而 McpServer.cs 将所有工具放在一个文件中。这使得代码库难以维护和扩展。

V20 硬编码

虽然它接受 --tia-major-version 命令行参数,但 NuGet 引用硬编码为 V20。而大多数现实世界的工厂仍在使用 V17 或 V18。

始终需要 GUI

无无头 (Headless) 模式 — 必须先手动打开 TIA Portal。无法在 CI/CD 流水线中使用。

进程选择问题

使用 processes.First() — 自动连接到找到的第一个 TIA Portal 实例。如果运行了多个实例,则无法选择目标实例。

功能覆盖率约为 T-IA Connect 的 13%

功能覆盖率约为 T-IA Connect 的 13%,heilingbrunner 是最先进的开源选择。其对 V20 文档格式的支持确实有用。然而,缺乏 STA 线程处理、无在线操作、无变量管理以及 6 个多月的维护停滞,使其不适合生产自动化。

gangsterke/Tia-Portal-MCP-server — 仅用一天完成的概念验证

12 个 MCP 工具 · 仅限 V18 · 耗时一天建成,从未更新

这个项目名副其实:一个在一天内(2025 年 10 月 12 日)建成的概念验证,此后从未更新。总代码约 1,260 行。它证明了将 MCP 连接到 TIA Portal 是可能的,但仅此而已。

技术栈

双进程架构:一个 Node.js TypeScript 层(约 400 行)处理 MCP 协议,而一个 C# .NET Framework 4.8 子进程(单个 Program.cs 文件中约 860 行)调用 Openness API。两个进程间通过 stdin/stdout JSON 进行通信。

12 个 MCP 工具 — 仅限只读

所有工具均为只读:打开/关闭项目、列出 PLC、列出程序块(仅限根级别 — 无分组递归)、将单个块导出为 XML、读取变量表、搜索变量、获取硬件配置、获取项目信息,以及两个 OPC UA 工具(导出/获取接口信息)。OPC UA 支持是其唯一原创功能。

get_block_code 工具具有误导性 — 它仅返回元数据(名称、类型、语言),而不返回实际的源代码。

显著问题

V18 硬编码

硬编码了 Portal V18\PublicAPI\V18\ 的绝对路径。完全不支持多版本。

缺乏 STA 线程处理

在 .NET Framework 4.8 上能运行全凭运气,因为主线程默认是 STA,但并未显式管理,在并发负载下会失败。

静默吞掉错误

代码中到处都是空的 catch 块 — 错误被静默忽略。如果出现问题,你永远不会知道。

启动时的竞争条件

简单地使用 setTimeout(2000ms) 等待 C# 子进程启动。无健康检查,无正确的握手机制。

零安全性

无身份验证,无路径验证(可能存在目录遍历漏洞),无速率限制。零测试,零 CI/CD,尽管 package.json 中声称使用 MIT 协议,但没有 LICENSE 文件。

功能覆盖率约为 T-IA Connect 的 1%–2%

功能覆盖率约为 T-IA Connect 的 1%–2%,这是一个极简的概念验证,称不上工具。其唯一原创贡献是 OPC UA 接口支持。可作为学习练习,但用于其他目的非常危险。

cadugrillo/s7-mcp-bridge — 无需 TIA Portal 的运行时监控

21 个 MCP 工具 · PLC Web API · 无工程开发能力

该项目采用了截然不同的方法:它不是通过 Openness API 连接到 TIA Portal,而是直接连接到 PLC 内置的 Web API(基于 HTTPS 的 JSON-RPC)。不需要任何 Siemens 软件 — 只需要与 PLC 的网络连接。这使其与其他项目具有互补性而非竞争性,但也引入了严重的安全性顾虑。

技术栈

纯 TypeScript/Node.js。通过 HTTP-stream (端口 57001) 或 stdio 传输。包装包括 Docker 多架构镜像和 Claude Desktop 扩展 (.mcpb)。无 Siemens 依赖 — 仅通过 fetch() 调用 https://<PLC_IP>/api/jsonrpc。

21 个 MCP 工具 — 聚焦运行时

系统 (Api-Ping, Api-Version, Api-Browse)、身份验证 (Api-Login, Api-Logout, ChangePassword)、配置 (List-AvailablePlcs)、数据 (PlcProgram-Browse, PlcProgram-Read, PlcProgram-Write)、CPU 控制 (ReadOperatingMode, RequestChangeOperatingMode, ReadSystemTime, SetSystemTime)、诊断 (Alarms-Browse, Alarms-Acknowledge, DiagnosticBuffer-Browse) 以及备份 (Plc-CreateBackup)。

优势

无需安装 Siemens 软件 — 任何装有 Node.js 的机器均可连接
架构清晰:每个工具一个文件,代码库组织良好
支持 Docker 和 Claude Desktop 扩展
无需打开 TIA Portal 即可进行运行时监控

潜在危险

AI 可能会停止生产

RequestChangeOperatingMode 工具允许 AI 代理将 CPU 置于 STOP 模式。PlcProgram-Write 工具允许其向 PLC 变量写入任意值。在生产线上,一次 AI 幻觉就可能导致整个工厂停产。这里没有确认对话框,没有审计追踪,也没有安全检查。 By contrast, T-IA Connect deliberately disabled the start_cpu and stop_cpu commands — they return an explicit error even though the Openness API would allow it. Downloading to a physical CPU requires a manual confirmation with a detailed safety message.

全局禁用 TLS 校验

代码设置了 NODE_TLS_REJECT_UNAUTHORIZED = "0",这禁用了整个 Node.js 进程的 TLS 证书验证 — 而不仅仅是 PLC 连接。这是一个严重的安全漏洞。

内存中的凭据

PLC 凭据以明文形式存储在内存中。没有加密,没有安全存储。

零测试

对于一个直接控制工业设备的工具,没有测试套件。自 2025 年 10 月起停止更新。

属于不同类别 — 仅限运行时监控

s7-mcp-bridge 占据了不同的市场细分 — 通过 PLC Web API 进行运行时监控,而非工程开发。零安装方法对于监控仪表板很有趣。然而,在关键操作(CPU 停机、变量写入)上完全缺乏安全护栏,使其在任何工业环境中都非常危险。T-IA Connect 在具备妥善安全保护的情况下,同时覆盖了工程和运行时操作。

为什么生产环境安全性至关重要

将 AI 连接到工业设备不是儿戏。以下是涉及的风险。

STA 线程处理是底线

Siemens Openness API 使用的 COM 对象要求单线程单元 (STA) 模式。如果没有正确的 STA 调度,COM 调用在负载下可能会静默损坏数据或导致随机崩溃。T-IA Connect 是唯一具有妥善 StaDispatcher 实现的方案。

AI + PLC = 安全关键型应用

当 AI 代理能够写入变量、下载程序或更改 CPU 运行模式时,一次幻觉就可能导致生产线停工。T-IA Connect 使用 API 密钥验证、速率限制和操作日志记录。开源替代方案则完全没有任何安全防护。

多版本支持的重要性

大多数工厂运行的是 V17 或 V18 — 而非 V20。硬编码为单一 TIA Portal 版本的工具排除了大多数现实世界的安装环境。T-IA Connect 能够针对 V17 到 V21 动态加载正确的 Openness DLL。

适用于 CI/CD 的无头模式

自动化流水线需要在没有 GUI 的情况下运行。T-IA Connect 可以以无头模式打开 TIA Portal,执行编译、下载并关闭 — 无需任何用户干预。而开源替代方案则需要预先手动打开 TIA Portal。

功能逐项对比表

完整对比矩阵 — 一目了然查看四个服务器的所有功能

功能特性
T-IA Connect
heilingbrunner
gangsterke
s7-mcp-bridge
MCP 工具数量
369
30
12
21
TIA Portal 版本支持
V17, V18, V19, V20, V21
仅限 V20 (NuGet 硬编码)
仅限 V18 (路径硬编码)
不适用 — 无需 TIA Portal
程序块操作
完整 CRUD + SCL/LAD/FBD/GRAPH 生成
导入/导出 (XML 和 V20 文档)
仅限导出 (根级别)
变量管理
完整 CRUD + 导入/导出
仅限读取
运行时读/写
HMI / WinCC
画面、连接、报警、变量
在线操作
GoOnline, Download (confirmation required), monitoring — Run/Stop CPU disabled by design for safety
运行/停止 CPU、读/写变量
PLCSim 仿真
PLCSim + PLCSim Advanced
STA 线程处理
StaDispatcher (生产安全级)
无 (存在 COM 崩溃风险)
无 (存在 COM 崩溃风险)
不适用
安全性
API 密钥 + 速率限制 + RSA 授权
无 (全局禁用 TLS)
传输协议
HTTP + SSE + stdio
仅限 stdio
仅限 stdio
HTTP-stream + stdio
REST API
417 个端点
无头模式 (Headless)
支持 — 无需 TIA Portal GUI
不支持 — 需要打开 TIA Portal
不支持 — 需要打开 TIA Portal
不适用
最后更新时间
活跃 (每周更新)
2025 年 9 月 (停止维护 6 个月以上)
2025 年 10 月 (1天建成后从未更新)
2025 年 10 月 (停止维护 6 个月以上)
授权协议
商业授权 (14天免费试用)
MIT
MIT
MIT
CPU Safety Guardrails
start/stop CPU disabled by design, physical download requires mandatory confirmation, full audit trail
None (no online operations)
None (no online operations)
None — RequestChangeOperatingMode exposed unprotected, arbitrary tag write without confirmation

常见问题解答

什么是 MCP,为什么它对 TIA Portal 很重要?

MCP (Model Context Protocol) 是 Anthropic 推出的一种开放标准,允许 AI 代理与外部工具交互。对于 TIA Portal,这意味着任何 AI(Claude, GPT, Llama, Gemini)都可以创建 PLC 程序块、管理变量、编译以及下载程序。它是现代 AI 与工业自动化之间的桥梁。

开源 MCP 服务器在生产环境中使用安全吗?

不安全。三个开源实现均未正确处理 STA 线程,这意味着在并发使用下存在 COM 对象损坏的风险。此外,它们缺乏身份验证、速率限制和审计日志 — 这些对于与工业设备交互的工具来说是必不可少的。它们适用于实验,而非生产。

我可以将 T-IA Connect 与 Claude、ChatGPT 或本地模型配合使用吗?

可以。T-IA Connect 支持任何兼容 MCP 的客户端:Claude Desktop, Claude Code, Cursor, 带 Continue 的 VS Code, Windsurf 以及任何自定义集成。由于 MCP 是开放协议,您可以选择自己的 AI 提供商 — 包括在物理隔离环境(air-gapped)中通过 Ollama 使用本地模型。

关于 s7-mcp-bridge — 它不是互补的吗?

s7-mcp-bridge 采用了不同的路径:它连接到 PLC 内置的 Web API,而非 TIA Portal。这对于运行时监控很有用,但它无法创建程序块、管理项目结构或进行任何工程开发。它也很危险:它可以将 CPU 置于 STOP 模式并写入任意变量值,且完全没有任何安全检查。T-IA Connect 在具备妥善安全保护的情况下,同时覆盖了工程开发和运行时操作。

准备好将 AI 连接到 TIA Portal 了吗?

从 14 天免费试用开始。支持 369 个 MCP 工具、所有 TIA Portal 版本,无需信用卡。