dsh-mcp-tia:在 DSH 里用自然语言操作博途工程

前言

在 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 列出的硬性条件:

  1. Windows。Openness 仅有 Windows 实现。
  2. 已安装 TIA Portal(社区后端覆盖 V15–V21)。V21 的 Openness 为模块化 DLL(如 PublicAPI\V21\net48\Siemens.Engineering.Base.dll 等),V20 及更早为单体 Siemens.Engineering.dll;后端 exe 须与博途主版本匹配。
  3. .NET Framework 4.8。
  4. 当前用户加入本地组 Siemens TIA Openness 后注销并重登,否则易出现无工具或权限错误。管理员 PowerShell 示例:
net localgroup "Siemens TIA Openness" "%USERNAME%" /add
  1. 博途侧允许 Openness 访问(V17 起有对应安全项);先用后端的 doctor 子命令自检。
  2. 自备一个 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,再重启。

安装后三步

  1. 从上表选一个后端,编译或使用 Release 预编译包,将 exe 放到固定目录(例如 %USERPROFILE%\.local\bin\)。
  2. 运行该后端的 doctor,确认 .NET、Openness、组成员与博途访问开关。
  3. 在 $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
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye