DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

leiyiqi070630-arch /

leiyiqi070630-arch/dsh-tia-mcp-plugin

Verified

DeepSeek Harness plugin wiring Siemens TIA Portal V21 + V16 Openness MCP engines, with a host-side write guard.

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: master@e312be9e

dsh-tia-mcp-plugin

validate release license

把 Siemens TIA Portal(博途) 接进 DeepSeek Harness(dsh)的插件:一个插件同时挂 V21 与 V16 两台 Openness MCP 引擎,模型侧直接得到 mcp__tia-portal__* / mcp__tia-portal-v16__* 工具,可以建工程、加硬件、生成 PLC/HMI、编译诊断、回读校验、保存。

English: a DeepSeek Harness bundle that wires two Siemens TIA Portal Openness MCP engines (V21: 240 tools, 67 listed by default; V16: 24 tools via a locally patched fork) into one plugin, with a host-side write guard for the V16 engine.

非官方项目,与 Siemens AG 无关。Siemens / TIA Portal / SIMATIC / STEP 7 / WinCC 为其商标。


为什么是两台引擎

V16 与 V20/V21 的 Openness 程序集不兼容(V16 是单体 Siemens.Engineering.dll,V20+ 拆成 Siemens.Engineering.Base/Step7/...),IL 层绑定不同,一个 exe 不可能跨版本。所以是两台独立进程、 两个 serverName,工具名天然不冲突。

V21 引擎 V16 引擎
来源 TIA Portal Openness MCP(MIT,交付 zip) 2phenix/tia-mcp-v16 + 本地补丁
工具数 240(默认列 67,其余走 FindTools/CallTool) 24
工具名 mcp__tia-portal__* mcp__tia-portal-v16__*
连接方式 ConnectIsolated(独立无头实例)/ Connect(受 dsh 守卫拦截) connect_isolated(本地补丁新增)/ 或 attach 已运行的 V16
HMI Unified + Classic 仅 Classic(Basic/Comfort/Advanced)
上下文成本 约 61 KB schema 约 9.5 KB schema

安装

前提:Windows、DeepSeek Harness(带 plugin_manager)、要驱动的博途版本已安装且 Openness 用户组已授权。

# 1) V21 引擎:从你自己的交付 zip 提取(校验 MANIFEST 里的 sha256)
pwsh -File .\scripts\bootstrap-v21.ps1 -ZipPath 'C:\path\to\TIA_MCP_..._v2.7.8.1_20261102.zip'

# 2) V16 引擎:克隆上游 → 打补丁 → 本地编译(需要 .NET SDK 8+ 与 TIA V16)
pwsh -File .\scripts\build-v16.ps1

# 3) 展开配置(把 __PLUGIN_DIR__ 换成本机绝对路径)
pwsh -File .\scripts\install.ps1

然后在 dsh 会话里:

plugin_manager action=install_bundle target=<本仓库的绝对路径>

替换已安装版本:先 remove_bundle,再 install_bundle(新模块要重启 dsh 才加载)。 只想要其中一台引擎:把 cordis.patch.yml 里对应的 insert 行删掉即可。

在中国大陆安装(GitHub 镜像)

直连 github.com 常年超时,下面这些公开镜像是 2026-11-05 实测可通 的(git ls-remote 往返):

镜像 用法前缀 实测耗时
gh-proxy.com https://gh-proxy.com/ + 原始 GitHub URL 0.9 s
ghfast.top https://ghfast.top/ + 原始 GitHub URL 1.5 s
gitclone.com https://gitclone.com/github.com/<owner>/<repo>.git 2.5 s
ghproxy.net https://ghproxy.net/ + 原始 GitHub URL 7.9 s

(kkgithub.com 实测不通,别用。)

一条命令装好(克隆 + 展开配置):

git clone --depth 1 https://ghfast.top/https://github.com/leiyiqi070630-arch/dsh-tia-mcp-plugin.git "$env:USERPROFILE\dsh-tia-mcp-plugin"; cd "$env:USERPROFILE\dsh-tia-mcp-plugin"; powershell -File .\scripts\install.ps1

让所有 GitHub 地址自动走镜像(配一次,之后 git clone https://github.com/... 都自动改写):

git config --global url."https://ghfast.top/https://github.com/".insteadOf "https://github.com/"

自动挑镜像的安装脚本:仓库里 scripts/quick-install.ps1 会依次探测官方与上面四个镜像, 用第一个能通的克隆,然后自动跑 install.ps1(可顺手 -V21Zip 提取引擎、-SkipV16 跳过 V16):

pwsh -File .\scripts\quick-install.ps1 -V21Zip 'D:\downloads\TIA_MCP_..._v2.7.8.1_20261102.zip'

下载 Release 附件也可以套同一前缀:

curl.exe -L -o dsh-tia-mcp-plugin.zip https://ghfast.top/https://github.com/leiyiqi070630-arch/dsh-tia-mcp-plugin/releases/download/v2.7.8-5/dsh-tia-mcp-plugin-2.7.8-5.zip

镜像是第三方服务,只负责搬运代码。不放心就核对 commit: git -C "$env:USERPROFILE\dsh-tia-mcp-plugin" log -1 --format=%H 与仓库页面显示的 commit 比一比。 更多排查(SSL 握手失败、吊销检查、代理)见 docs/CN-MIRRORS.md。

配置要点

cordis.patch.yml(由 install.ps1 从模板生成)里需要按机器改的只有三处:

command: '__PLUGIN_DIR__\runtime\v21\TiaMcpServer.exe'   # 引擎位置
args: [--tia-major-version, '21']                        # 装多版本时必填
env:  { TiaPortalLocation: 'C:\Program Files\Siemens\Automation\Portal V21' }
env:  { TIA_OPENNESS_DIR:  'C:\Program Files\Siemens\Automation\Portal V16\PublicAPI\V16' }

V16 写保护(本插件自带,宿主侧)

V16 那台引擎默认 attach 你在界面里开着的工程,而且工具名里没有 Connect,dsh 的 tia-collision-guard 管不到它。所以本插件注册了一个自己的守卫,只拦 10 个写入类工具 (set_attribute、import_*、compile、compile_hmi、save_project)。

放行需要四道全过:

  1. 引擎状态文件 %LOCALAPPDATA%\tia-mcp-v16\state.json 里 mode=isolated
  2. 里面的 pid 进程还活着
  3. 状态未过期(maxStateAgeMinutes,默认 480)
  4. 状态里的 exe 等于本插件这台引擎(防止别的宿主写的 isolated 被误信)

任一条不满足就拒绝并给出两条路径:先 connect_isolated(带工程副本),或显式设 TIA_V16_ALLOW_WRITE=1。只读工具永远放行。守卫自己的状态写在 %LOCALAPPDATA%\tia-mcp-v16\guard-status.json,不用触发拒绝也能确认它加载了。

推荐使用顺序

mcp__tia-portal__Bootstrap / mcp__tia-portal-v16__tia_status     # 先看环境与实例归属
.connect_isolated(工程副本路径)                                    # 起独立无头实例,不碰已开窗口
只读核对 → 写入 → compile → save_project → disconnect              # 一次连接做完一批事

隔离不是免费的:起一个无头 V16 实例实测约 50 秒,所以别一个块连一次。

大对象怎么过手(V16)

V16 引擎原版把所有 export_* 结果截断在 60,000 字符,HMI 屏幕动辄 190 KB,导出即废。补丁加了:

  • export_* 可选 outPath:写文件并返回 {file, bytes, preview},不再截断;
  • import_* 可选 file:直接读磁盘 XML,xml 与 file 二选一。

于是 200 KB 的屏幕 XML 不需要走一遍对话上下文。

验证状态

细节见 docs/VERIFICATION.md。摘要:

  • 已验证(本机实测,全部在隔离实例 + 工程副本上):V21 全链路(建工程 → 加 CPU → 变量表 → S7DCL 梯形图 → 编译 0 错 0 警 → XML 回读);V16 全链路(隔离打开副本 → import_scl → compile → export_block_xml → save_project → 重开确认落盘);V16 HMI 往返(屏幕 193 KB 导出写盘 → 回灌 → compile_hmi 0 错 → 落盘确认);写保护守卫 13 条单测路径。
  • 未验证:真实工程上的 HMI 编译前置(运行系统密码 / 起始画面)、下载到实体 PLC 或 PLCSIM、在线写值、 V16 的 set_attribute 正常路径、符号链接型 HMI 导入的崩溃预检。编译通过 ≠ 运行验证,空白工程通过 ≠ 现场验证。

训练资料(随仓库分发,MIT)

vendor/tia-openness-mcp/ 是 V21 引擎交付包里的中文训练营(00–13 课 + 练习与参考答案 + 16 份离线校验证据)、 docs/、手册/、templates/、manifest/tools-list.json(全量工具签名)与自检脚本 (Check-S7DCL.ps1、Check-LadReadback.ps1、audit/*.ps1)。

引擎本身自带的 GetTrainingLesson(path=...) 读的是同一套内容;这里是它的离线副本, 没装引擎的机器也能直接翻语法、模板和禁忌表。来源、许可与脱敏处置见 vendor/tia-openness-mcp/UPSTREAM.md。

仓库结构

cordis.patch.yml.template   bundle patch 模板(三条行:V21 / V16 / 写保护守卫)
index.js                    宿主侧 V16 写保护守卫
locale/ icon.svg            插件页显示资源
patches/v16-local.patch     给上游 2phenix/tia-mcp-v16 的补丁(不重分发其源码)
scripts/                    bootstrap-v21 / build-v16 / install / validate.mjs(仓库自检)
docs/VERIFICATION.md        实测记录
vendor/tia-openness-mcp/    MIT 训练营、文档、手册、模板、工具清单(引擎二进制不含)
MANIFEST.json               期望的引擎 SHA256 与文件版本

本地自检(CI 也跑同一个脚本,零依赖):

node scripts/validate.mjs

许可

  • 本仓库代码:MIT(见 LICENSE)
  • 第三方引擎:见 THIRD_PARTY_NOTICES.md(V21 引擎 MIT;V16 上游无 LICENSE,故只发布补丁、不重分发)
—/ 5

No ratings yet

Verified DSH bundle

Commit e312be9eb047

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout