adminLABSCO SUMMARY
V17 through V20 are supported; only V19 is fully tested, and the README says so.
The other versions are expected to work because Openness keeps its APIs backward compatible, which is an honest statement of what has and hasn't been exercised. Live values come through a separate S7CommPlus bridge shipped inside the download — that is how the diagnostics tool can report a CPU's actual RUN or STOP state, which the engineering API does not expose at all.
What it is
A Windows MCP server that reaches TIA Portal through the Openness API: 18 tools with 205 actions across PLC programming, project management, library operations, hardware configuration, cross-reference analysis and deployment.
What you get
- Blocks read and written —
blocks_read(16 actions) lists, exports and compiles;blocks_write(24) creates FBs, FCs and OBs and edits interfaces, networks and rungs db(11 actions) for data blocks, including reading and writing start values at any depth in nested multi-instance structurestag(13),udt(11),alarm_text(15) andwatch(14) for tags, user-defined types, alarm texts and watch or force tableshardware(14) andlibrary(25) for hardware configuration and library managementdiagnostics(7) anddownload_upload(4) — go online, compare the project against the PLC, scan the network for reachable controllers, downloadlive_data(11) reads data blocks, tag tables, watch tables and CPU diagnostics from the running controllerxref(6) for cross-references,folders(5) for the project tree,session(16) andadmin(13) for exports, call statistics and recent errors
Requirements
Windows with .NET Framework 4.8, and TIA Portal V17 to V20 installed — V16 and older are detected and refused with a message. Download the latest portable release, extract it to C:\TiaCommander\ and point your client at C:\TiaCommander\TiaCommander.exe over stdio, or add it in one line with claude mcp add --transport stdio --scope user tiacommander -- "C:\TiaCommander\TiaCommander.exe". Protocol: MCP 2024-11-05.
Setup effort
Follow the published steps
USE CASES
Understanding a project you inherited
List the blocks, read their interfaces, and follow cross-references to see what calls what before you change anything.
Building a block without hand-editing XML
Create the FB or FC with its interface and logic, and get the compile errors back in the same call.
Finding out what the controller is actually doing
Read live data block values, tag tables and CPU diagnostics from the running PLC, and compare the online state against the offline project.
Documenting alarms for a handover
Export alarm texts, text lists and alarm classes to XLSX or CSV, then open the file straight from the conversation.
18 tools
Listed in project docs. Your client may show a different list.
alarm_textblocks_readblocks_writedbdiagnosticsdownload_uploadfoldersget_infohardwarelibrarylive_dataopen_managersessiontagudtwatchxrefBEFORE YOU INSTALL
What to know first
Tools you get
18 tools named in the project's documentation.
Where it runs
All 8 documented clients run the server on your machine.
INSTALLATION
Connect your client
Server setup
Download the latest portable ZIP (the file ending -portable.zip) from https://github.com/a4webdev/tiacommander-mcp/releases/latest
Extract it to C:\TiaCommander\ — you should see TiaCommander.exe alongside the runtime DLLs
Make sure your Windows user is in the Siemens TIA Openness and Siemens TIA Engineer groups (check with whoami /groups | findstr "Siemens TIA"), then restart the PC if you had to add them
Add TiaCommander to your AI client's MCP configuration (tabs below)
MCP Clients
Claude Desktop
{
"mcpServers": {
"tiacommander": {
"command": "C:\\TiaCommander\\TiaCommander.exe"
}
}
}Claude Code
claude mcp add --transport stdio --scope user tiacommander -- "C:\TiaCommander\TiaCommander.exe"VS Code, Visual Studio
{
"servers": {
"tiacommander": {
"type": "stdio",
"command": "C:\\TiaCommander\\TiaCommander.exe",
"args": []
}
}
}Cursor, Windsurf, Gemini CLI
{
"mcpServers": {
"tiacommander": {
"command": "C:\\TiaCommander\\TiaCommander.exe",
"args": []
}
}
}Codex
[mcp_servers.tiacommander]
command = "C:\\TiaCommander\\TiaCommander.exe"
args = []