返回市场
梯亚门户-mcp

梯亚门户-mcp

作者:DaMccRee2 星标更新:2025-11-07

项目介绍

TIA Portal MCP Server - VS Code Extension

基于TIA Portal实现的Model Context Protocol (MCP) Server VS Code扩展。

此扩展将TIA Portal MCP Server封装为VS Code扩展,提供自动依赖检测、可视化配置界面和实时运行监控。

✨ VS Code扩展功能

  • 🔍 自动依赖检测 - 自动检测TIA Portal .NET Framework 4.8、用户组权限等
  • ⚙️ 可视化配置界面 - 侧边栏提供用户友好的参数设置面板
  • 📊 实时操作监控 - 输出面板显示详细的服务器运行状态和日志
  • 🚀 一键启动/停止 - 快速管理MCP Server
  • 🔧 自动修复建议 - 当发现问题时提供修复指导
  • 📦 内置服务器 - 扩展已包含编译好的TiaMcpServer.exe
graph LR

A[Ai] --> B[TIAPORTAL MCP Server]
B --> C[Siemens.Engneer.dll]
C --> D[TIA Portal]
D --> E[设备]

📁 项目结构

tiaportal-mcp-v19/
├── vscode-extension/        # VS Code 扩展目录
│   ├── package.json        # 扩展清单
│   ├── extension.js        # 扩展主代码
│   ├── srv/net48/          # 内置 MCP 服务器
│   └── README.md           # 扩展说明文档
├── src/                    # MCP 服务器源代码
│   └── TiaMcpServer/
├── build-extension.ps1     # 一键构建和打包脚本
├── test-extension.ps1      # 扩展测试脚本
└── README.md              # 本文档

🚀 快速开始(推荐使用VS Code扩展)

方法1:安装预编译扩展(推荐)

  1. 下载或构建扩展

    # 构建扩展 (包括编译服务器和打包)
    .\build-extension.ps1
    
    # 或者如果已有编译好的服务器,只打包扩展
    .\build-extension.ps1 -SkipBuild
    
    # 构建并自动安装
    .\build-extension.ps1 -Install
    
  2. 安装扩展

    # 使用命令行
    code --install-extension tiaportal-mcp-v19-0.1.0.vsix
    
    # 或在 VS Code 中: Extensions 视图 -> "..." -> Install from VSIX...
    
  3. 首次使用

    • 点击左侧活动栏上的 TIA Portal MCP 图标
    • 点击 检查依赖项 检查所有依赖项
    • 如果有问题,请按照提示进行修复
    • 点击 启动服务器 启动服务器

请参阅扩展使用说明 vscode-extension/README.md

方法2:命令行方法(传统方法)

如果不使用VS Code扩展,可以直接运行MCP服务器:

# 构建服务器
dotnet build --configuration Release

# 运行服务器
.\src\TiaMcpServer\bin\Release\net48\TiaMcpServer.exe --logging 2

🧪 测试扩展

运行测试脚本来验证所有组件:

# 基本测试
.\test-extension.ps1

# 详细测试 (显示错误详情)
.\test-extension.ps1 -Verbose

测试包括:

  • ✅ 扩展文件完整性
  • ✅ Packaging.json有效性
  • ✅ 服务器可执行文件及其依赖项
  • ✅ 系统需求检查
  • ✅ 准备打包

功能

此MCP服务器专门针对TIA Portal,并提供了以下功能:

核心功能

  • ✅ 连接到TIA Portal实例
  • ✅ 打开/关闭/保存项目和会话
  • ✅ 获取项目结构树视图
  • ✅ 设备及设备项信息查询
  • ✅ PLC软件管理和编译

块操作

  • ✅ 获取块信息和列表
  • ✅ 导出单个/批量块至XML
  • ✅ 从XML导入块
  • ✅ 通过正则表达式过滤块
  • ✅ 保留块的层次结构

类型操作

  • ✅ 获取用户定义类型(UDT)信息
  • ✅ 导出单个/批量类型至XML
  • ✅ 从XML导入类型
  • ✅ 通过正则表达式过滤类型

文档操作(V19有限支持)

  • ⚠️ 版本不支持SIMATIC SD文档格式(.s7dcl/.s7res)
  • ⚠️ 文档导入/导出功能需要TIA Portal V20或更高版本

🚀 快速开始(VS Code扩展方法)

安装扩展

  1. 从VSIX文件安装

    # 方法 1: 使用命令行
    code --install-extension tiaportal-mcp-v19-0.1.0.vsix
    
    # 方法 2: 在 VS Code 中
    # 打开 Extensions 视图 (Ctrl+Shift+X)
    # 点击 "..." 菜单 -> Install from VSIX...
    # 选择 tiaportal-mcp-v19-0.1.0.vsix 文件
    
  2. 重新加载VS Code

首次使用

  1. 安装扩展后,点击左侧活动栏上的 TIA Portal MCP 图标

  2. 点击侧边栏上的 检查依赖项 按钮

  3. 扩展会自动检测所有依赖项:

    • ✅ TIA Portal V19安装
    • ✅ .NET Framework 4.8
    • ✅ 用户组权限
    • ✅ 环境变量配置
    • ✅ 服务器可执行文件
  4. 如果发现任何问题,请按照提示进行修复:

    • 缺少用户组权限 → 点击 添加到用户组 按钮
    • 环境变量未设置 → 在设置中配置TIA Portal路径
  5. 满足所有依赖项后,点击 启动服务器 启动MCP服务器

使用命令

在命令面板(Ctrl+Shift+P)中输入'TIA Portal MCP':

  • TIA Portal MCP: 检查依赖项 - 检查所有依赖项
  • TIA Portal MCP: 启动服务器 - 启动MCP服务器
  • TIA Portal MCP: 停止服务器 - 停止MCP服务器
  • TIA Portal MCP: 重启服务器 - 重启MCP服务器
  • TIA Portal MCP: 打开设置 - 打开设置面板
  • TIA Portal MCP: 显示日志 - 显示详细日志
  • TIA Portal MCP: 将用户添加到西门子TIA开放性组 - 将用户添加到所需组

配置设置

在侧边栏的设置面板中,可以配置:

  • TIA Portal安装路径 - TIA Portal V19安装路径
  • 自定义服务器路径 - 自定义服务器路径(可选)
  • TIA主要版本 - TIA Portal主要版本号
  • 日志级别 - 日志级别(0-3)
  • 自动启动服务器 - 启动时自动运行服务器
  • 启动时检查依赖项 - 启动时检查依赖项
  • 显示详细日志 - 显示详细日志

查看运行状态

  • 状态栏 - 服务器运行状态显示在右下角
  • 服务器状态视图 - 显示所有依赖项的检查结果
  • 输出面板 - 显示详细的服务器日志和运行信息

📋 系统需求

必需组件

  1. TIA Portal V19 - 需要正确安装和配置
  2. TIA Openness API V19 - 与TIA Portal一起安装
  3. .NET Framework 4.8 - Windows组件
  4. Windows用户组 - 用户必须属于 Siemens TIA Openness 用户组

TIA Openness安装位置

TIA Portal V19的Openness API位于:

C:\Program Files\Siemens\Automation\Portal V19\PublicAPI\V19\Siemens.Engineering.dll

环境变量配置

需要设置系统环境变量:

  • 变量名TiaPortalLocation
  • 变量值C:\Program Files\Siemens\Automation\Portal V19

设置步骤

  1. 右键点击“我的电脑” → “属性”
  2. 点击‘高级系统设置’
  3. 点击‘环境变量’
  4. 在“用户变量”或“系统变量”下点击“新建”
  5. 添加上述变量名和值
  6. 重启命令行/IDE使变量生效

用户权限配置

将用户添加到西门子TIA开放性组

方法1:使用计算机管理

  1. Win+X → 选择“计算机管理”
  2. 展开“本地用户和组” → “组”
  3. 双击 ‘Siemens TIA Openness’
  4. 点击“添加” → 输入用户名 → “确定”

方法2:使用PowerShell(管理员)

Add-LocalGroupMember -Group "Siemens TIA Openness" -Member "$env:USERNAME"

验证

Get-LocalGroupMember -Group "Siemens TIA Openness"

注意:添加用户到组后,需要注销并重新登录Windows才能生效。

项目构建

使用Visual Studio

  1. 打开 TiaMcpServer.sln
  2. 选择发布配置
  3. 生成解决方案

使用命令行(MS-DOS)

# 还原NuGet包
dotnet restore

# 构建项目
dotnet build --configuration Release

# 构建输出位于
# .\src\TiaMcpServer\bin\Release\net48\

使用VNet CLI

cd src\TiaMcpServer
dotnet build -c Release -f net48

运行服务器

直接运行

.\src\TiaMcpServer\bin\Release\net48\TiaMcpServer.exe

指定TIA版本(如有必要)

.\src\TiaMcpServer\bin\Release\net48\TiaMcpServer.exe --tia-major-version 19

启用日志

# 日志输出到stderr
.\src\TiaMcpServer\bin\Release\net48\TiaMcpServer.exe --logging 1

# 日志输出到调试输出 (Debug Output)
.\src\TiaMcpServer\bin\Release\net48\TiaMcpServer.exe --logging 2

# 日志输出到Windows事件日志
.\src\TiaMcpServer\bin\Release\net48\TiaMcpServer.exe --logging 3

MCP客户端配置

VS Code 配置

在VS Code工作区创建 .vscode/mcp.json

{
  "servers": {
    "tiaportal-v19": {
      "command": "C:\\path\\to\\TiaMcpServer.exe",
      "args": [],
      "env": {}
    }
  }
}

Claude Desktop配置

编辑 %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "tiaportal-v19": {
      "command": "C:\\path\\to\\TiaMcpServer.exe",
      "args": [],
      "env": {}
    }
  }
}

可用的MCP工具

连接管理

  • 连接 - 连接到TIA Portal
  • 断开连接 - 断开与TIA Portal的连接
  • 获取状态 - 获取服务器状态

项目/会话操作

  • 获取项目 - 获取打开的项目列表
  • 打开项目 - 打开项目/会话 (.ap19/.als19)
  • 保存项目 - 保存当前项目/会话
  • 另存为项目 - 另存为项目
  • 关闭项目 - 关闭当前项目/会话

项目结构

  • 获取项目树 - 获取项目树结构
  • 获取设备列表 - 获取设备列表
  • 获取设备信息 - 获取详细设备信息
  • 获取设备项信息 - 获取设备项信息

PLC软件

  • 获取软件信息 - 获取PLC软件信息
  • 编译软件 - 编译PLC软件
  • 获取软件树 - 获取软件树结构

块操作

  • 获取块信息 - 获取块信息
  • 获取块列表 - 获取块列表(支持正则表达式)
  • 获取具有层次结构的块列表 - 获取具有层次结构的块列表
  • 导出单个块 - 导出单个块
  • 导入单个块 - 导入单个块
  • 批量导出块 - 批量导出块
  • 批量导出块作为文档 - ⚠️ 不支持(需要V20+)

类型操作

  • 获取类型信息 - 获取类型信息
  • 获取类型列表 - 获取类型列表(支持正则表达式)
  • 导出单个类型 - 导出单个类型
  • 导入单个类型 - 导入单个类型
  • 批量导出类型 - 批量导出类型

使用示例

示例1:打开项目并导出所有块

1. 连接到TIA Portal
2. 从'D:/Projects/MyProject.ap19'打开项目
3. 从PLC软件'PLC_1/Software'导出所有块到'C:/Export/Blocks'
4. 关闭项目
5. 断开与TIA Portal的连接

示例2:导出特定块

1. 连接到TIA Portal
2. 从'D:/Projects/MyProject.ap19'打开项目
3. 从PLC软件'PLC_1/Software'导出块'Main/Control/FC100'到'C:/Export'
4. 关闭项目
5. 断开与TIA Portal的连接

示例3:编译PLC软件

1. 连接到TIA Portal
2. 从'D:/Projects/MyProject.ap19'打开项目
3. 编译PLC软件'PLC_1/Software'
4. 保存项目
5. 关闭项目
6. 断开与TIA Portal的连接

V19与V20的区别

V19限制

  • ❌ 不支持SIMATIC SD文档格式(.s7dcl/.s7res)
  • ❌ 不可用ExportAsDocumentsExportBlocksAsDocuments
  • ❌ 不可用ImportFromDocumentsImportBlocksFromDocuments
  • ⚠️ 一些新API功能可能不可用

V19支持

  • ✅ 完整的块导入/导出(XML格式)
  • ✅ 完整的类型导入/导出(XML格式)
  • ✅ 项目编译和管理
  • ✅ 设备配置操作 注意:
  Siemens.Engineering.dll 组件由于 V16、V17 和 V18 的 Siemens.Engineering.dll 组件包含在交付范围内,因此基于 V16、V17 和 V18 的应用程序在 V19 中无需修改即可运行。
同样的,基于博图V19开发的MCP同样可以直接支持博图V20,但不支持其特有功能,因为API引用是V19版本的。以上可以通过插件侧边栏 “TIA Major Version” 实现不同版本博图的适配
要使用 V19 的功能,您必须集成 V19 的 dll 并重新编译应用程序。Siemens.Engineering.dll 组件可在安装目录下的"PublicAPI[版本]\"中找到。
例如,V19 的 dll 可以在 "C:\Program Files\Siemens\Automation\Portal V*\PublicAPI\V19\Siemens.Engineering.dll" 找到

故障排除

问题:"用户不在所需的组中"

解决方案

  1. 确认用户已被添加到 Siemens TIA Openness
  2. 注销并重新登录Windows
  3. 重新运行服务器

问题:"无法找到TIA Portal"

解决方案

  1. 确认TIA Portal V19已正确安装
  2. 检查环境变量 TiaPortalLocation 设置
  3. 确认路径指向正确的TIA Portal安装目录

问题:"无法加载Siemens.Engineering.dll"

解决方案

  1. 确认Openness API已安装(与TIA Portal一起自动安装)
  2. 检查路径:C:\Program Files\Siemens\Automation\Portal V19\PublicAPI\V19\
  3. 以管理员身份重新安装TIA Portal

问题:"连接失败"

解决方案

  1. 确保TIA Portal V19正在运行
  2. 尝试连接之前关闭所有打开的项目
  3. 检查TIA Portal是否被其他程序锁定

技术架构

核心组件

  • Program.cs - 应用程序入口点和主机配置