TIA Portal MCP Server
Integrates with Siemens TIA Portal through the official TIA Portal Openness API, letting an AI assistant export a hash-verified, offline-indexable snapshot of a V20/V17/V15.1 project (PLC blocks, UDTs, tag tables), run offline engineering analysis (call graphs, block interfaces, symbol and data-flow traces, LAD/FBD/SCL rendering), inspect live UI context and run read-only live queries against the open V20 project, import 1–20 block XML files via a plan → approve → apply gate with backup, compile, readback and rollback, and export/analyze (and plan-gated author) Classic WinCC and WinCC Unified V20 HMI data. It never downloads to a PLC, goes online, forces values or writes PLC runtime data.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@TIA Portal MCP Server export a snapshot of the open project and show the call graph for OB1"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
TIA Portal MCP Server
A local Model Context Protocol server and CLI for Windows that lets an AI coding assistant (Claude Code, Codex or any stdio MCP client) analyze and carefully change Siemens TIA Portal projects through the official TIA Portal Openness API.
Version 0.29.1 (0.29.0 was the first standalone public distribution). It contains only the tool itself: no TIA projects, exports, PLC programs, site data, Siemens binaries or private Git history.
What it does:
Exports a complete, hash-verified PLC program-source snapshot (blocks, PLC types/UDTs, tag tables) from the project that is already open in TIA Portal, and builds an offline index and execution model from it.
Answers engineering questions offline from that snapshot: call graphs, block interfaces, symbol and data-flow traces, references, compact LAD/FBD/SCL text rendering of blocks, saved analysis notes.
Observes the current Portal UI context (open project, selected block, network) and runs exact, read-only live queries against the open V20 project.
Imports 1–20 block XML files into the open project through a plan → approve → apply gate with baseline backup, compile, readback comparison and rollback.
Classic WinCC and WinCC Unified V20 HMI export, analysis and (unaccepted, plan-gated) authoring.
It never downloads to a PLC, goes online, forces values or writes PLC runtime data.
Supported TIA Portal versions
Versions are declared in portal-versions.json; the
project file extension selects the version, and there is no cross-version fallback.
Version | Project | Snapshot export + offline analysis | Block import | Passive UI context | Live query / navigation / engineering inspect | HMI tools |
V20 |
| yes | yes | yes | yes | yes |
V15.1 |
| yes | yes | yes | no | no |
V17 |
| yes | yes | yes | no | no |
V16, V18, V19 | recognized and rejected (no adapter) |
A capability in the table is only an upper bound. It becomes available on a
machine only when the native companion for that exact version is built, is not
older than its sources and passes its offline self-test. tia_doctor reports
what is actually available. See docs/multi-version-architecture.md.
Offline analysis tools work on any existing export directory and do not need TIA Portal at all.
Related MCP server: tiacommander-mcp
Prerequisites
Windows 10/11 x64.
Node.js 20.11 or later with npm (tested with Node.js 24).
Windows PowerShell 5.1 (
powershell.exe, built into Windows). The tool never usespwsh..NET Framework 4.x C# compiler (
%WINDIR%\Microsoft.NET\Framework64\v4.0.30319\csc.exe, present on standard Windows installs) to build the native companions.For anything that talks to TIA Portal: a licensed TIA Portal installation of a supported version with the TIA Openness option installed, and the Windows user in the local "Siemens TIA Openness" group.
Siemens assemblies
This repository contains no Siemens binaries. The native companions are
compiled against Siemens.Engineering.dll from your local TIA Portal install
(<Portal root>\PublicAPI\<version>\Siemens.Engineering.dll). Resolution order
per version:
TIA_MCP_API_DLL_<version>(e.g.TIA_MCP_API_DLL_V20,TIA_MCP_API_DLL_V15_1,TIA_MCP_API_DLL_V17);the legacy variable (
TIA_MCP_OPENNESS_API_DLLfor V20,TIA_MCP_V15_1_API_DLLfor V15.1);the Portal root from the registry (
HKLM\SOFTWARE\Siemens\Automation\_InstalledSW\TIAPxx\Global\Path);the standard root
C:\Program Files\Siemens\Automation\Portal Vxx.
Built executables (tools/*.exe) are local build output and are ignored by Git.
Install and build
git clone <this repository> tia-mcp
cd tia-mcp
npm ci
npm run build # TypeScript -> dist/
npm run doctor # what is available on this machine; attaches to nothingThat is enough for the offline analysis tools. Build native companions for the TIA Portal versions you have:
Command | Builds |
| TypeScript, then the five production companions: V20 importer, V20 resident live-query core, V20 HMI companion, V15.1 snapshot companion, V15.1 importer. Every component is staged, compiled and must pass its offline self-test before any installed executable is replaced; a failure rolls the whole batch back. Requires both the V20 and V15.1 Openness APIs. |
| V17 snapshot companion ( |
| One companion for one version, e.g. |
| Single-component shortcuts. |
Every rebuilt companion triggers Siemens' Openness authorization prompt in Portal on its first attach. After rebuilding, reconnect the MCP client so it loads the new server.
Register with an MCP client
The server speaks MCP over stdio: node <repo>\dist\index.js.
Claude Code
claude mcp add --transport stdio --scope user tia_portal -- node "C:\path\to\tia-mcp\dist\index.js"
claude mcp listAdd --env NAME=value options before -- for any configuration below, e.g.
--env TIA_MCP_ALLOWED_PROJECT_ROOTS=D:\TIA\Projects. Start a new session and
check the connection with /mcp.
Codex
Merge into %USERPROFILE%\.codex\config.toml:
[mcp_servers.tia_portal]
command = "node"
args = ['C:\path\to\tia-mcp\dist\index.js']
# Snapshot exports and imports can take minutes.
tool_timeout_sec = 900
env = { TIA_MCP_ALLOWED_PROJECT_ROOTS = 'D:\TIA\Projects' }Other stdio clients
{
"mcpServers": {
"tia_portal": {
"command": "node",
"args": ["C:\\path\\to\\tia-mcp\\dist\\index.js"]
}
}
}If the client cannot find node, use the absolute path from Get-Command node.
Do not auto-approve the write tools (tia_apply_*).
Configuration
All settings are environment variables; none are required for offline analysis.
Variable | Default | Purpose |
| package root | Where snapshots, import evidence ( |
|
| Default snapshot output root for |
| — | Extra semicolon-separated roots that tools may read exports from or write to. |
|
| Semicolon-separated roots for explicit TIA project paths. |
| off | Disable the export/output root allowlist for a deliberate session. |
| off | Disable the project root allowlist for a deliberate session. |
| discovered | Openness API DLL per version (see above). |
| beside the DLL | Optional API XML documentation. |
|
| Override the home-version executable of a companion. |
| 1 hour | Idle timeout of a prepared live session (30000–86400000). |
| 120000 | HMI companion limit for inspect/export (10000–3600000; bundle export gets at least 600000). |
| 900000 | HMI companion limit for imports, edits and project creation. Expiry kills the companion and reports an unknown write outcome. |
| off | Enable |
|
| Exact host allowlist for the probe, e.g. |
|
| Port allowlist for the probe. |
Typical workflow
tia_doctor— what is ready, degraded, missing or stale. WithportalVersionorprojectPathit adds per-version capability status.tia_get_current_ui_context— the running Portal processes, open project, selected block/network. Pass the returnedprocessIdto later calls when more than one Portal is open.Live reads (V20):
tia_get_current_block,tia_query_live_project,tia_search_live_objects,tia_get_graph_context. They attach an exact read-only session themselves when Portal is visible.For whole-program analysis,
tia_export_project_indexonce. The first call is an authorization preflight; keep Portal visible and repeat with explicit authorization readiness. Later snapshots reuse unchanged objects.Offline:
tia_fast_lookup,tia_read_block,tia_search_export,tia_trace_call_graph,tia_trace_symbol,tia_trace_data_flow. Save verified conclusions withtia_save_analysis_note.Changes:
tia_create_import_plan→ human approval →tia_apply_import.
First attach and Siemens authorization
The first Openness attach of a given executable makes TIA Portal show an
authorization dialog that a human must approve. The server never attaches
silently from a cold state: a cold tia_prepare_live_session /
--prepare-live-session first returns portal_authorization_check_required,
and a minimized Portal returns portal_must_be_visible_for_authorization. Keep
Portal in the foreground and approve the prompt.
Import safety model (plan → approve → apply)
Block import is the only PLC-program write path. It is deliberately two-step:
Plan —
tia_create_import_planvalidates 1–20 candidate SimaticML block files (blocks: [{ xmlPath, targetName, targetNumber }]) against the exact open project. It returns a review and a short-lived (15 min), single-use confirmation token bound to: Portal PID and process-start time, canonical project path, every target block and candidate XML SHA-256, compile scope, the save choice (saveProjectdefaults tofalse), and the self-tested, version-selected importer and Openness API paths and SHA-256 hashes.Approve — a human reviews the plan. The assistant must not approve its own plan; configure the client so
tia_apply_importis never auto-approved.Apply —
tia_apply_importwith the token and the same block list. It re-verifies identities and hashes, consumes the token once, then: exports a baseline of each target, imports, compiles (block or PLC-software scope), re-exports and compares program content, and rolls every imported block back on failure. A separate process then reads the blocks back independently. It never downloads to a PLC. WithsaveProject: falsethe project stays unsaved for review in TIA Portal.
Any identity, hash, file or block-list change between plan and apply blocks the import; never replay a token, create a new plan. HMI write tools use the same single-use plan store. See docs/current-ui-context.md and docs/live-openness.md.
Tools (47)
Area | Tools |
Diagnostics |
|
UI context and live V20 session |
|
Snapshots and indexes |
|
Offline analysis |
|
Block import |
|
HMI read and analysis |
|
HMI authoring (classic WinCC) |
|
HMI authoring (WinCC Unified) |
|
node dist/index.js --list-tools prints the registered catalog. HMI authoring
has not passed native acceptance; see docs/hmi-authoring-status.md.
CLI
The CLI shares the capability checks and resident-query implementation with MCP:
npm run doctor # same as node dist\index.js --doctor
node dist\index.js --doctor --require core-read
npm run prewarm # start/fingerprint the helper; no attach
node dist\index.js --prepare-live-session --process-id <PID>
node dist\index.js --prepare-live-session --process-id <PID> --confirm-portal-authorization-ready
node dist\index.js --live-query --process-id <PID> --resource-kind block --name Main --number 1
node dist\index.js --live-batch --input .\queries.json
node dist\index.js --export-snapshot --process-id <PID> --project-path '<project>.ap20'
node dist\index.js --export-snapshot --process-id <PID> --project-path '<project>.ap20' --confirm-portal-authorization-readyqueries.json is an array or { "queries": [...] }; each item has a unique
operationId, resourceKind, exact name and optional number, blockKind
or softwarePath.
Tests
Command | Needs |
| Windows, Node.js, Windows PowerShell 5.1 and the .NET Framework |
| Built companions and |
| A running Portal and |
| A running V20 Portal; read-only. |
All test fixtures are synthetic. Use copies of test projects for any live verification, never production projects.
Documentation
Limitations
No PLC download, upload, online monitoring, forcing or runtime value access. Online monitoring would need a separate PLC Web API, OPC UA or S7 read path.
Live queries, navigation, engineering inspection and HMI tools are V20 only.
Not verified: imports that change logic followed by a real save, fault-injected rollback, FB imports with instance DBs on V17, know-how protected blocks, and native acceptance of HMI authoring.
Siemens, SIMATIC, TIA Portal and WinCC are trademarks of Siemens AG. This project is not affiliated with or endorsed by Siemens.
License
Available Tools
47 toolsplc_probe_portsProbe PLC PortsARead-onlyIdempotent
Read-only TCP connectivity probe for likely S7/OPC UA/Web API endpoints. Does not authenticate or read PLC data.
Inputs: host (required), ports, timeoutMs.
tia_analyze_hmi_alarmsLink HMI alarms to PLC sourceAIdempotent
Analyze a saved exact HMI observation and existing PLC export without TIA. Link trigger/acknowledgement tags and optional reset tags to exact PLC tag or DB definitions, writers, clear candidates, guards and screen references. Explicit connection-to-software-path bindings prevent cross-PLC guesses. Optional official alarm XLSX supplements classic HMI evidence; its HMI ownership is caller-selected, not verified. Does not execute scripts or inspect runtime.
Inputs: hmiName (required), hmiPath (required), exportDir (required), projectPath (required), +5 more.
tia_apply_hmi_importADestructive
Apply an explicitly approved exact HMI import plan once. Backs up the original object, rechecks baseline under exclusive access, imports, compiles and reads back. No download. Failure can leave unsaved engineering changes; never replay a token.
Inputs: approval (required), planSha256 (required), confirmToken (required).
tia_apply_hmi_projectA
Create a new isolated classic WinCC project only after explicit approval of the exact immutable plan. Does not attach to an existing project or download. Compiles, saves and independently reopens the generated project. Partial failed output is retained. Two headless TIA sessions; can take several minutes (TIA_MCP_HMI_WRITE_TIMEOUT_MS, default 15 min).
Inputs: approval (required), planSha256 (required), confirmToken (required).
tia_apply_importApply TIA Project ImportADestructive
Consume one import plan token and import its blocks into the exact running TIA process with the version-selected importer: back up every target, override-import (data blocks first), compile, re-export and compare every block, roll back on any failure, and optionally save. blocks must repeat the planned blocks in the planned order. Never downloads to a PLC.
Inputs: blocks (required), projectPath (required), confirmToken (required), outDir, +1 more.
tia_apply_unified_hmi_editBDestructive
Apply one explicitly approved immutable Unified property plan, recheck baseline under exclusive access, keep scoped recovery values, compile the hosting device and verify in a fresh helper session. No object reconstruction, download or automatic rollback.
Inputs: approval (required), planSha256 (required), confirmToken (required).
tia_apply_unified_hmi_projectA
Apply an explicitly approved Unified project creation plan once in an isolated TIA process. Create native objects, compile the created device, save and independently reopen for requested-value verification. No download; partial failed output is retained. Two headless TIA sessions; can take several minutes (TIA_MCP_HMI_WRITE_TIMEOUT_MS, default 15 min).
Inputs: approval (required), planSha256 (required), confirmToken (required).
tia_build_reference_indexBuild TIA Reference IndexAIdempotent
Build or refresh a persistent project-neutral symbol definition, read/write reference, and data-flow cache from an existing Simatic ML export. It writes only under the export's _codex_index folder and never changes the TIA project or PLC.
Inputs: exportDir (required), forceRebuild.
tia_create_hmi_import_planBRead-only
Read-only exact plan for replacement of one existing classic V20 screen/template. Captures live baseline, full exact diff, compile/save scope and immutable one-time approval token. Rejects renamed objects and changed external references.
Inputs: kind (required), processId (required), objectPath (required), targetPath (required), +4 more.
tia_create_hmi_project_planARead-only
Offline immutable plan to create a NEW isolated classic WinCC V20 project and device, import generated screen/template candidates, compile, save and reopen for verification. Requires an exact Siemens catalog type identifier. Does not access TIA or overwrite an existing directory.
Inputs: spec (required).
tia_create_import_planCreate TIA Import PlanARead-onlyIdempotent
Read-only validation for importing 1 to 20 candidate Simatic ML blocks as one change (for example a DB member plus the FC networks that use it). Binds one short-lived confirmation token to the exact live TIA process and project, every candidate XML digest and target identity, each target's current content digest, the importer and API identity, and the save choice. Several blocks also return each candidate as compact text for review; tia_apply_import then imports them in one session, data blocks first, with one software compile, and rolls all of them back on any failure.
Inputs: blocks (required), projectPath (required), note, processId, +4 more.
tia_create_unified_hmi_edit_planARead-only
Read-only exact plan for existing Unified control geometry, ARGB colors, text in one existing language and font size. Rejects dynamically bound properties and stale identities. Compile covers the entire hosting device; save is optional and covers the entire project.
Inputs: input (required).
tia_create_unified_hmi_project_planARead-only
Create an immutable offline plan for a NEW isolated Unified V20 project. Exact catalog ID, destination, startup screen, objects and scripts are included. No existing project is opened or overwritten.
Inputs: spec (required).
tia_doctorTIA MCP DoctorARead-onlyIdempotent
Read-only capability diagnosis shared with the CLI: installed files, policy gates and stale native binaries. By default it attaches to nothing and starts nothing. Optional sections: projectPath or portalVersion adds environment (project path and version-adapter validation); liveCore=true starts the resident read-only core when absent and adds its version, uptime and attached session; onlineReport=true adds the online-monitoring boundary report.
Inputs: require, liveCore, timeoutMs, projectPath, +2 more.
tia_edit_hmi_nativeARead-onlyIdempotent
Create an offline native XML candidate using exact UTF-16 ranges and expected text. Preserves every unedited range, including unknown vendor XML. Does not import, compile or establish dependency compatibility.
Inputs: edits (required), originalXml (required), baselineSha256 (required).
tia_edit_hmi_textBRead-only
Replace the text of one uniquely named classic HMI object in one existing language. Supports Text, TextOn or TextOff. Preserves other languages, events, bindings and unknown XML; replaces formatting only inside the selected text value.
Inputs: text (required), culture (required), objectName (required), originalXml (required), +2 more.
tia_export_hmi_bundleBRead-only
Export classic V20 screens, templates, tag tables, VB scripts, text/graphic lists, project graphics and connections as native XML in one read-only attachment, with hashes and external-reference inventory. Alarms, recipes and library types are excluded; dependency closure is incomplete.
Inputs: processId (required), targetPath (required), projectPath (required), processStartTimeUtc (required).
tia_export_hmi_configurationExport HMI configuration for analysisBIdempotent
Reuse one canonical JSON observation per exact project and HMI, or read alarms, tags, connections, screens and scripts through public Openness APIs. Set refresh only after a project change. Does not execute scripts, modify the project, export PLC blocks, or produce an importable WinCC backup. Partial reads never replace a usable observation.
Inputs: hmiName (required), hmiPath (required), projectPath (required), refresh, +3 more.
tia_export_hmi_nativeARead-onlyIdempotent
Read-only classic WinCC V20 native screen/template XML export using the official API. Discover exact targets first, then list object paths with an empty objectPath. Requires exact PID, process start and project. Dependencies are not included; this is not a complete HMI backup.
Inputs: processId (required), projectPath (required), processStartTimeUtc (required), kind, +3 more.
tia_export_project_indexExport TIA Project IndexA
Create one exact-session snapshot of every PLC block, PLC type/UDT, and complete tag table with the official TIA Openness export APIs, then build the existing offline index and execution model. Hardware/network/HMI objects are outside this program-source snapshot. It never modifies, saves, compiles, or downloads the project.
Inputs: projectPath (required), confirmExport (required), detail, processId, +5 more.
tia_fast_lookupFast TIA Program LookupAIdempotent
One-call lookup across block inventory, call edges, persistent symbol definitions, read/write references, data flows and saved engineering notes for an indexed S7-1200/S7-1500 export. query is one string, or up to 50 strings (block aliases, symbols, addresses) resolved together in a single cached call.
Inputs: query (required), exportDir (required), limit, autoBuild.
tia_generate_hmi_designARead-only
Generate classic V20 native screen/template candidates with text, rectangles, buttons, navigation, momentary tag commands and IO fields. No visual template required. Dependencies must be provided when planning a project. Native serialization requires later TIA validation.
Inputs: design (required).
tia_generate_unified_hmi_designARead-only
Generate an offline WinCC Unified V20 public-API creation program with screens, reusable layouts, internal/external tags, explicit connections, discrete alarms, native controls, navigation and event script bodies. This JSON is not a native import archive. No TIA access or network probing.
Inputs: design (required).
tia_get_current_blockGet Current TIA BlockARead-onlyIdempotent
Details of the block currently selected/open in TIA Portal. source=live (default) reads it from the exact running V20 project: official attributes, cross references and, from one temporary block export, interface and program body; nothing is persisted. source=export resolves it through an exactly matching existing export instead: offline metadata, call relations, interface members and existing non-stale reference results; never creates or refreshes an export.
Inputs: limit, roots, source, exportDir, +10 more.
tia_get_current_ui_contextGet Current TIA UI ContextBRead-onlyIdempotent
Perform one bounded passive observation of the selected TIA Portal version (V20 by default; other supported versions explicitly selectable), exact project and visible editor evidence. Does not attach, click, focus, poll, capture the screen or access a PLC.
Inputs: roots, maxDepth, maxNodes, processId, +4 more.
tia_get_graph_contextRead GRAPH Step or Transition ContextARead-onlyIdempotent
Read one exact live GRAPH block and return a step's exits or a transition's predecessor/successor steps, actions, interlocks and Boolean guards. Sequence numbers disambiguate reused step numbers. No UI navigation, project write, scheduler simulation or PLC runtime monitoring.
Inputs: name (required), processId (required), step, limit, +5 more.
tia_hmi_authoring_capabilitiesBRead-only
Report separate HMI software/version adapters and implemented authoring boundaries. Availability is not live verification.
Inputs: no named parameters.
tia_inspect_engineeringInspect TIA Hardware, Network and HMIBRead-onlyIdempotent
Read a bounded hardware/network/HMI/PLC-tag observation from an already prepared exact V20 session and report evidence-backed configuration diagnostics. Includes exposed HMI tags, connections and Unified alarms; classic HMI alarms are explicitly unsupported when not exposed. Never compiles, exports files, changes a project or contacts a PLC.
Inputs: processId (required), timeoutMs, maxObjects, includeScreens.
tia_inspect_unified_hmiARead-only
Read-only Unified V20 inspection. Empty targetPath lists targets; empty screenPath lists screens including groups; empty objectName lists screen items. A selected primitive returns a scoped property baseline and scripts, not a complete native import archive.
Inputs: processId (required), projectPath (required), processStartTimeUtc (required), language, +3 more.
tia_list_export_indexesList TIA Export IndexesARead-onlyIdempotent
List compact export summaries under bounded roots. By default each project scope returns its valid current snapshot, or its latest indexed snapshot with the current-pointer failure reason; historyCount counts all snapshot directories. includeHistory shows all snapshots. Child directories starting with '_' are tool test directories: skipped by default and always excluded from automatic matching; the search root itself is exempt. _codex_index is always skipped. omitted counts collapsed history snapshots, skipped test directories, project-filtered entries, and matching entries beyond maxResults; project filters run before maxResults. Explicit listing never makes an invalid or historical snapshot eligible for automatic matching.
Inputs: roots, maxResults, projectName, projectPath, +2 more.
tia_list_hmi_targetsList HMI targetsBRead-onlyIdempotent
List exact HMI software names, hardware paths and API types in a prepared project without reading PLC programs or exporting configuration.
Inputs: processId (required), timeoutMs.
tia_prepare_live_sessionPrepare Exact TIA Live SessionBRead-onlyIdempotent
Prepare one exact resident read-only Openness session without enumerating project objects. A cold session first returns an explicit Portal-authorization check; call again only after the user has Portal visible and is ready to approve the Siemens access prompt.
Inputs: maxDepth, maxNodes, processId, timeoutMs, +1 more.
tia_preview_hmi_designARead-only
Generate self-contained offline HTML to preview a design, screen navigation, local IO values and press/release buttons. Never connects to equipment. This is not TIA runtime simulation or a verified native rendering.
Inputs: design (required).
tia_query_live_projectQuery Current TIA Project ObjectsARead-onlyIdempotent
Resolve blocks, PLC data types/UDTs, tag tables or PLC tags in the exact running TIA V20 project through the resident session (attached automatically when Portal is visible). One object: give resourceKind and name; returns direct official attributes, optional CrossReferenceService evidence and, for a block, interface and program body from one temporary XML. Several objects: give queries (up to 50) for a shallower result per object in one call; cross references default off there.
Inputs: name, number, queries, blockKind, +16 more. Returns: ok, status, completeness, requestedActionCompleted
tia_read_blockRead TIA BlockARead-onlyIdempotent
Read one exported block, DB, UDT or tag table. Give exportDir with name/number/relativePath; view=text also accepts xmlPath for a single Simatic ML file such as an import candidate. Views: text (default) is compact text, the interface then one line per coil, assignment, instruction box or block call in each network (LAD/FBD), or the SCL source, with every instruction box shown including GET/PUT/MOVE; xml is the raw exported XML, only needed to prepare an import; interface is the flattened interface/member table; context is the metadata, direct callers, direct callees and same-number companion objects.
Inputs: name, view, limit, number, +7 more.
tia_read_export_indexRead TIA Export IndexBRead-onlyIdempotent
Read compact summary metadata from an existing _codex_index/tia-export-index.json. Coverage includes issueCount; includeCoverageIssues explicitly returns the full summary.analysis.coverage.issues array. includeProfile adds the detected PLC family (S7-1200, S7-1500 or unknown) from project evidence.
Inputs: exportDir (required), limit, includeCalls, includeItems, +2 more.
tia_read_hmi_alarm_exportRead exported HMI alarmsARead-onlyIdempotent
Read an existing official WinCC alarm XLSX export, including classic HMI alarms unavailable through Openness. Preserves multilingual text, trigger and acknowledgement columns with worksheet/row evidence. Does not launch Excel, evaluate formulas, attach to TIA or import anything. Workbook project identity is not independently verifiable.
Inputs: file (required), limit, query.
tia_reanalyze_snapshotB
Verify all current snapshot XML against the manifest, rebuild the execution model offline and publish its analysis under the current-pointer lock.
Inputs: exportDir, projectScopeDir.
tia_save_analysis_noteSave TIA Analysis NoteBIdempotent
Persist an evidence-backed engineering explanation under the export cache so a stronger model can analyze once and later models can reuse it. The note is bound to the current export signature and marked stale after program changes.
Inputs: subject (required), summary (required), evidence (required), exportDir (required), +2 more.
tia_search_analysis_notesSearch TIA Analysis NotesBRead-onlyIdempotent
Search persisted model-authored engineering notes and report whether each note still matches the current export signature.
Inputs: exportDir (required), limit, query.
tia_search_exportSearch TIA ExportARead-onlyIdempotent
Search one export index; bounded and read-only. in=text (default): plain-text search across the indexed XML files. in=inventory: block/type/tag names and call edges. in=symbols: symbol table from block interfaces, DB members and PLC tag tables, filtered by scope and query. in=references: call edges, symbol/tag definitions and XML text matches for the query together, filtered by kind.
Inputs: exportDir (required), in, kind, limit, +6 more.
tia_search_live_objectsSearch Current TIA Project ObjectsARead-onlyIdempotent
Search prepared live inventory by partial name/group path or exact block kind/number. Returns exact identities for subsequent reads. No whole-project XML export, program-body scan, navigation or PLC access. Pagination requires an unchanged project inventory.
Inputs: processId (required), query, number, offset, +6 more.
tia_trace_call_graphTrace TIA Call GraphARead-onlyIdempotent
Walk downstream, upstream or both directions through indexed call edges from one block. Without name/number/relativePath it lists the OB entry blocks and their direct calls instead.
Inputs: exportDir (required), name, number, maxDepth, +3 more.
tia_trace_data_flowTrace TIA Data FlowCIdempotent
Recursively trace where a value comes from or where it is used, using evidence-backed SCL assignments, GRAPH actions, and LAD/FBD network flows from a cached S7-1200/S7-1500 export.
Inputs: query (required), exportDir (required), match, maxDepth, +3 more.
tia_trace_symbolTrace TIA SymbolBIdempotent
Find symbol definitions, writers, readers, and direct upstream/downstream flows across SCL, LAD/FBD calls, and GRAPH actions. The cache is rebuilt automatically when the export signature changes.
Inputs: query (required), exportDir (required), limit, match, +1 more.
tia_update_hmi_objectARead-only
Offline scoped edit of one uniquely named native screen object. Change existing geometry or RGB color properties while preserving all other native XML, bindings and extensions verbatim.
Inputs: objectName (required), properties (required), originalXml (required), baselineSha256 (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 47 tools
Descriptions are unusually detailed and often explicitly carve out boundaries, but there are several clusters with overlapping purpose: tia_export_hmi_bundle / tia_export_hmi_native / tia_export_hmi_configuration, tia_edit_hmi_text / tia_update_hmi_object / tia_edit_hmi_native, and tia_search_export / tia_fast_lookup / tia_trace_symbol / tia_trace_data_flow all read from the same export index. The classic-versus-Unified HMI split and the plan/apply pairing add further near-duplicates (e.g. tia_create_hmi_project_plan vs tia_create_unified_hmi_project_plan, tia_apply_hmi_project vs tia_apply_unified_hmi_project) that an agent must carefully disambiguate by target type.
Almost everything is snake_case with a tia_ prefix and a verb_noun shape (tia_create_import_plan, tia_apply_import, tia_search_export, tia_trace_symbol). Deviations are minor: noun-phrase names like tia_doctor and tia_hmi_authoring_capabilities, the adjective-first tia_fast_lookup, and one tool (plc_probe_ports) outside the tia_ prefix.
47 tools is far beyond a comfortably scoped surface, and the count is inflated by parallel classic/Unified HMI variants and three-stage plan/apply pipelines. Many tools are legitimate, but the set is large enough that discovery and selection become a burden rather than an aid.
The domain surface is broad: session preparation, live queries, export indexing, symbol/data-flow tracing, block import with rollback, and HMI inspect/plan/apply/export for both classic and Unified. However, there are notable gaps—no object deletion, no PLC download or online monitoring, no alarm or recipe authoring, and PLC program creation is limited to importing pre-authored Simatic ML candidates.
Maintenance
Related MCP Connectors
The HubSpot MCP Server acts as a bridge that enables AI assistants and Large Language Models to securely interact with HubSpot CRM data through natural conversation, without requiring users to understand complex API structures. It provides read-only access to standard CRM objects (contacts, companies, deals, tickets, products, invoices, and more) and their associations, secured via OAuth 2.0, allowing AI agents to perform tasks like summarizing deals, fetching company updates, and looking up record changes.
The Cortex MCP server provides read-only access to real-time engineering context from the Cortex developer portal, allowing AI coding assistants to answer natural language questions about your organization's catalog (microservices, libraries, domains, teams, infrastructure), scorecards (engineering standards and best practices), initiatives (goals and deadlines), and Engineering Intelligence metrics. It includes tools for querying documentation, tracking personal entities, and accessing AI-assisted insights across the entire Cortex ecosystem.
Let AI operate servers without SSH. Choose actions, approve risky changes, and audit every step.
Hosted SQL Server MCP server for Claude, ChatGPT and Cursor, with each action switched per account.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceIndustrial-grade MCP server for Siemens TIA Portal (V17–V21). 120+ tools for PLC programming: create blocks (FB/FC/OB/DB), manage tags, compile, download, and simulate with PLCSim Advanced. On-premise, sovereign-AI compatible.19MIT
- FlicenseNot gradedqualityCmaintenanceMCP server that connects AI assistants to Siemens TIA Portal via the Openness API. AI-assisted PLC programming, project management, hardware configuration, cross-reference analysis, and deployment. 19 tools, 230 actions.60-
- FlicenseNot gradedqualityBmaintenanceAn MCP server that lets AI agents interact with Siemens TIA Portal via its Openness API.-
- AlicenseNot gradedqualityDmaintenanceAn MCP server for controlling Siemens TIA Portal, enabling AI agents to connect, read PLC tags, list blocks, inspect project structure, and compile projects. This community edition provides 5 read-only tools under the MIT license.MIT