前言¶
在 DSH(DeepSeek Harness)里做工业自动化相关开发时,常见做法是手写脚本调用 TIA Portal Openness API,或在博途 GUI 里重复点击。前者要熟悉 .NET 与 Openness 对象模型,后者难以和智能体会话串联。MCP 可以把「列设备、读块、编译、保存」封装成工具,但西门子并未提供官方 MCP Server,DSH 也不会自带博途运行时。
dsh-mcp-tia(维护者 yh01010)是社区目录「联网工具」分类下的桥接插件:它用 DSH 宿主自带的 @deepseek-ai/dsh-mcp-client 启动你本机配置的 Openness MCP Server,把对方注册的工具暴露为 mcp__tia__*,从而在会话里用自然语言读写 PLC/HMI 内容、编译与诊断。装完插件并不等于能用——还必须自备后端可执行文件并在 $DSH_HOME/cordis.patch.yml 里填好路径;配置不对时表现为「没有工具」,而不是 DSH 起不来(failOnStartupError 默认为 false)。
这是什么¶
dsh-mcp-tia 是 DSH 桥接插件,不是 MCP Server,也不包含 TIA Portal、Openness DLL 或任何西门子软件。插件包内主要是 cordis.patch.yml 配置片段;真正驱动博途的是你选择的第三方 Openness MCP Server,通过 TIA Portal Openness 操作本机已安装的 TIA Portal。
前置条件¶
在安装插件之前,应先确认环境满足 README 列出的硬性条件:
- Windows。Openness 仅有 Windows 实现。
- 已安装 TIA Portal(社区后端覆盖 V15–V21)。V21 的 Openness 为模块化 DLL(如
PublicAPI\V21\net48\Siemens.Engineering.Base.dll等),V20 及更早为单体Siemens.Engineering.dll;后端 exe 须与博途主版本匹配。 - .NET Framework 4.8。
- 当前用户加入本地组
Siemens TIA Openness后注销并重登,否则易出现无工具或权限错误。管理员 PowerShell 示例:
net localgroup "Siemens TIA Openness" "%USERNAME%" /add
- 博途侧允许 Openness 访问(V17 起有对应安全项);先用后端的
doctor子命令自检。 - 自备一个 Openness MCP Server 可执行文件(本仓库不提供)。
核心功能¶
插件本身只做「接线」:按 cordis.patch.yml 以 stdio 启动后端进程,工具前缀为 mcp__tia__(由 serverName: tia 决定)。具体能调用哪些工具、是否支持写操作,取决于你选的后端。
README 归纳了三个可互换的开源后端(只改 command/args):
| 后端 | 支持版本 | 工具规模(README 表述) | 要点 |
|---|---|---|---|
| heilingbrunner/tiaportal-mcp | V21 默认,旧版靠参数 | 65 只读 + 49 写(写需 --allow-write) |
TiaMcpServer.exe --doctor 自检 |
| Czarnak/tia-portal-mcp | 仅 V21 | 7 只读 / 17 读写 | 全局工具 tia-mcp,--access-mode read-write |
| bulaofen0036-coder/TIA_Portal_Openness_MCP | V20 + V21 | 224(默认暴露 62) | V21/V20 各一套 exe |
写 SCL/LAD 等文本格式块时,README 建议优先考虑 heilingbrunner 或 bulaofen;若只要较小工具面且仅需 V21,可考虑 Czarnak(带 dryRun、审计日志等守卫)。博途工程写入多在内存生效,须再调用保存类工具落盘;下载到 PLC 仍须人工。
安装与启用¶
安装插件¶
本包不发布到 npm,只能从 GitHub 安装。官方命令为:
dsh plugin --profile desktop add github:yh01010/dsh-mcp-tia
将 desktop 换成你的 profile 名。安装后重启 DSH 生效。也可把 dsh-mcp-tia 写入 profile 的 package.json → dsh.profile.bundles 后执行 pnpm install,再重启。
安装后三步¶
- 从上表选一个后端,编译或使用 Release 预编译包,将 exe 放到固定目录(例如
%USERPROFILE%\.local\bin\)。 - 运行该后端的
doctor,确认 .NET、Openness、组成员与博途访问开关。 - 在
$DSH_HOME/cordis.patch.yml用 id 覆盖 填写真实command/args,再次重启 DSH,在工具列表中应看到mcp__tia__*。
不要在已装插件包的情况下再用 insert 插入同 id mcp-tia 的行,否则会出现两个 mcp-client 争抢 serverName: tia,启动报错 serverName "tia" is already in use by another mcp-client instance。
配置示例¶
已装插件包时,在 home patch 中覆盖配置(勿改插件包内的 cordis.patch.yml):
# $DSH_HOME/cordis.patch.yml
- id: mcp-tia
name: '@deepseek-ai/dsh-mcp-client'
config:
serverName: tia
transport: stdio
command: 'C:\Users\<你的用户名>\.local\bin\TiaMcpServer.exe'
args:
- '--tia-major-version'
- '21'
toolCallTimeoutMs: 180000
failOnStartupError: false
确认只读工具可用后,再按后端文档追加写相关参数(例如 heilingbrunner 的 --allow-write)。toolCallTimeoutMs 默认 60000 ms;博途冷启动与编译可能更久,README 建议调大。路径含空格时用 YAML 单引号包裹整串即可。
典型用法¶
用会话完成接线¶
若不想手改 YAML,README 提供了一段提示词:说明插件已装但路径仍为占位、要求确认博途版本与 Openness 组权限、跑通 doctor、用 id 覆盖写法编辑 $DSH_HOME/cordis.patch.yml,并提醒先只读再写。前提是会话对 $DSH_HOME 有写权限。
梯形图(LAD)文本路径¶
README 说明:不要手写 SimaticML FlgNet XML;可靠路径是 S7DCL 梯形图文本,经导入文档类工具再 CompileSoftware → SaveProject。示例片段:
{ S7_Optimized := "TRUE"; S7_PreferredLanguage := "LAD"; S7_Version := "0.1" }
FUNCTION "Name" : Void
VAR_INPUT Start : Bool; END_VAR
VAR_OUTPUT Run : Bool; END_VAR
{ S7_Language := "LAD" }
NETWORK
RUNG wire#powerrail
Contact( #Start )
Coil( #Run )
END_RUNG
END_NETWORK
END_FUNCTION
具体工具名以你所选后端的 MCP 工具列表为准。
适用场景与注意¶
适合:已在 Windows 上部署 TIA Portal,希望把 Openness 能力接到 DSH 会话的开发者或自动化工程师;需要 AI 辅助创建项目/设备、生成块与变量、编译诊断、保存工程,且能接受自备并维护第三方 MCP Server。
注意:
- 插件与后端进程以 当前 DSH 进程的用户权限 运行;安装前应阅读 GitHub 仓库 源码与 MIT 许可证(
package.json版本 0.1.0)。 - 西门子无官方 MCP Server;安全与写操作策略完全由所选后端决定,未备份工程上不要直接开写模式。
- 社区插件目录 SkillHub 条目 与 DeepSeek / 幻方无官方从属关系,属「一切皆插件」生态中的第三方扩展。
结尾¶
dsh-mcp-tia 把「DSH + 自研 Openness MCP Server」之间的接线标准化:安装命令固定、配置落在 home patch、工具统一为 mcp__tia__*。价值在于把博途 Openness 纳入 DSH 工具面,而不是替代 TIA Portal 或后端实现。
- 目录页:https://www.skillhub.cn/plugins/yh01010/dsh-mcp-tia
- GitHub:https://github.com/yh01010/dsh-mcp-tia