{"id":"e982776a-ed51-4f53-b26c-2f94feebc3ba","shortId":"aDrSpy","kind":"skill","title":"tia-portal-mcp","tagline":"Use when the TIA Portal MCP server is available and the task involves reading or modifying a TIA Portal project interactively: browsing the project tree, reading or writing PLC block logic (SIMATIC SD YAML), listing tag tables, inspecting hardware config, running cross-reference ","description":"# tia-portal-mcp\n\n## Scope\n\nDirect TIA Portal interaction via MCP tools — no code generation required.\nUse MCP tools for exploration, inspection, and targeted single-step modifications.\nFor bulk automation, looped operations, or scripted workflows, fall back to `tia-openness-roadmap`.\n\n---\n\n## When MCP is the right choice\n\n| Situation | Use |\n|---|---|\n| Explore project structure before writing code | MCP `browse_project_tree` |\n| Read a block to understand logic or generate code | MCP `get_block_content` |\n| Apply a focused, one-shot block edit | MCP `update_block_logic` |\n| List tags for context or documentation | MCP `list_tag_tables` |\n| Inspect hardware topology / IP addresses | MCP `read_hardware_config` |\n| Find unused or unreferenced objects | MCP `read_cross_references` |\n| Add a single device to the project | MCP `search_equipment_catalog` → `add_network_device` |\n| Check compile errors before or after edits | MCP `compile_check` |\n| Complex loops / bulk changes over many blocks | `tia-openness-roadmap` instead |\n\n---\n\n## Safety convention\n\nThree tools are **write-protected** and require the caller to pass `confirm: true` explicitly.\nNever pass `confirm: true` without first reading back the current state and confirming intent with the user.\n\n| Tool | Write-protected |\n|---|---|\n| `update_block_logic` | yes — requires `confirm: true` |\n| `add_network_device` | yes — requires `confirm: true` |\n| `configure_network_device` | yes — requires `confirm: true` |\n\n---\n\n## Tool reference\n\n### browse_project_tree\n\nRecursively enumerates the project: devices, PLC software, block folders, blocks, tag tables, types.\n\n| Parameter | Type | Required | Notes |\n|---|---|---|---|\n| `projectPath` | string | no | Path to `.ap21` file; defaults to currently open project |\n\nReturns JSON tree. Use returned `Path` values as `blockPath` input for other tools.\n\n---\n\n### get_block_content\n\nExports a PLC block as a **SIMATIC SD YAML** document. Supports SCL, LAD, FBD, GRAPH, STL, and Data Blocks.\n\n| Parameter | Type | Required | Notes |\n|---|---|---|---|\n| `blockPath` | string | yes | `BlockName`, `PLC_1/BlockName`, or `PLC_1/Blocks/Folder/.../BlockName` |\n| `projectPath` | string | no | |\n\nReturns YAML string. Parse or display as-is; pass back (modified) to `update_block_logic`.\n\n---\n\n### update_block_logic\n\nImports SIMATIC SD YAML to update or create a PLC block. Always call `get_block_content` first\nto obtain the current YAML before editing, unless creating a block from scratch.\n\n| Parameter | Type | Required | Notes |\n|---|---|---|---|\n| `blockPath` | string | yes | Target block path |\n| `yamlContent` | string | yes | Valid SIMATIC SD YAML |\n| `confirm` | bool | yes | Must be `true` to execute — default `false` is a no-op |\n| `projectPath` | string | no | |\n\n---\n\n### list_tag_tables\n\nRetrieves all PLC tag tables with tags and user constants.\n\n| Parameter | Type | Required | Notes |\n|---|---|---|---|\n| `plcName` | string | no | Filter to a specific PLC |\n| `projectPath` | string | no | |\n\nReturns JSON array of tag tables.\n\n---\n\n### read_hardware_config\n\nExports hardware configuration and network topology: devices, rack modules, network interfaces,\nIP addresses, PROFINET device names, subnets, and IO systems.\n\n| Parameter | Type | Required | Notes |\n|---|---|---|---|\n| `projectPath` | string | no | |\n\n---\n\n### read_cross_references\n\nExports PLC cross-reference diagnostics with source objects, referenced objects, locations,\naccess types, and reference types.\n\n| Parameter | Type | Required | Notes |\n|---|---|---|---|\n| `projectPath` | string | no | |\n| `plcName` | string | no | Filter to a specific PLC |\n| `filter` | string | no | `AllObjects` \\| `ObjectsWithReferences` \\| `ObjectsWithoutReferences` \\| `UnusedObjects` |\n\nUse `UnusedObjects` to find dead code before cleanup.\n\n---\n\n### search_equipment_catalog\n\nSearches the installed TIA Portal V21 hardware catalog (including GSD/HSP packages) by type\nname, article number, or description. Always run before `add_network_device`.\n\n| Parameter | Type | Required | Notes |\n|---|---|---|---|\n| `query` | string | yes | Free-text search |\n| `projectPath` | string | no | |\n\nReturns entries with `typeIdentifier` values — copy the exact identifier into `add_network_device`.\n\n---\n\n### add_network_device\n\nInserts a device from the hardware catalog into the project.\n\n| Parameter | Type | Required | Notes |\n|---|---|---|---|\n| `typeIdentifier` | string | yes | Exact value from `search_equipment_catalog` |\n| `deviceName` | string | yes | Name for the new device in the project |\n| `deviceItemName` | string | no | Name for root device item; defaults to `deviceName` |\n| `confirm` | bool | yes | Must be `true` to execute |\n| `projectPath` | string | no | |\n\n---\n\n### configure_network_device\n\nSets network identity and interface properties for a device already present in the project.\n\n| Parameter | Type | Required | Notes |\n|---|---|---|---|\n| `deviceName` | string | yes | Device to configure |\n| `ipAddress` | string | no | IPv4 address |\n| `subnetMask` | string | no | Subnet mask |\n| `pnDeviceName` | string | no | PROFINET device name |\n| `subnetName` | string | no | Subnet to connect to |\n| `ioSystemName` | string | no | IO system to connect to |\n| `confirm` | bool | yes | Must be `true` to execute |\n| `projectPath` | string | no | |\n\n---\n\n### compile_check\n\nInvokes TIA Portal compile on PLC software and returns errors and warnings.\n\n| Parameter | Type | Required | Notes |\n|---|---|---|---|\n| `blockPath` | string | no | Compile a single block; omit to compile full PLC software |\n| `plcName` | string | no | Target a specific PLC; omit to compile all PLCs |\n| `projectPath` | string | no | |\n\n---\n\n## Common execution patterns\n\n### Read and understand a block\n\n1. `browse_project_tree` — find the block path\n2. `get_block_content(blockPath)` — read SIMATIC SD YAML\n3. Analyze or present the content\n\n### Modify a block\n\n1. `get_block_content(blockPath)` — capture current YAML\n2. Edit the YAML (preserve structure and indentation)\n3. Show the diff to the user and confirm\n4. `update_block_logic(blockPath, yamlContent, confirm=true)`\n5. `compile_check(blockPath)` — verify no errors introduced\n\n### Add and configure a new device\n\n1. `search_equipment_catalog(query)` — find the exact `typeIdentifier`\n2. Confirm device and name with user\n3. `add_network_device(typeIdentifier, deviceName, confirm=true)`\n4. `configure_network_device(deviceName, ipAddress, ..., confirm=true)`\n5. `read_hardware_config` — verify result\n\n### Audit unused objects\n\n1. `read_cross_references(filter=\"UnusedObjects\")` — list unreferenced objects\n2. Present findings to user before any removal action\n\n### Pre-edit compile baseline\n\n1. `compile_check` — record baseline errors/warnings\n2. Apply changes\n3. `compile_check` again — compare to baseline","tags":["tia","portal","mcp","totally","integrated","claude","czarnak","agent-skills","claude-code","claude-code-plugin","claude-skills","codex"],"capabilities":["skill","source-czarnak","skill-tia-portal-mcp","topic-agent-skills","topic-claude-code","topic-claude-code-plugin","topic-claude-skills","topic-codex","topic-codex-cli","topic-codex-plugin","topic-gemini","topic-gemini-cli","topic-gemini-cli-extension","topic-gemini-extension","topic-mcp"],"categories":["totally-integrated-claude"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/Czarnak/totally-integrated-claude/tia-portal-mcp","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add Czarnak/totally-integrated-claude","source_repo":"https://github.com/Czarnak/totally-integrated-claude","install_from":"skills.sh"}},"qualityScore":"0.454","qualityRationale":"deterministic score 0.45 from registry signals: · indexed on github topic:agent-skills · 9 github stars · SKILL.md body (6,840 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:08:30.462Z","embedding":null,"createdAt":"2026-05-18T13:13:58.643Z","updatedAt":"2026-05-18T19:08:30.462Z","lastSeenAt":"2026-05-18T19:08:30.462Z","tsv":"'/blockname':340 '1':778,804,851,892,915 '1/blockname':336 '1/blocks/folder':339 '2':786,812,860,901,921 '3':795,820,867,924 '4':829,875 '5':837,883 'access':507 'action':909 'add':163,174,244,566,593,596,845,868 'address':149,477,686 'allobject':530 'alreadi':667 'alway':374,563 'analyz':796 'ap21':285 'appli':123,922 'array':458 'articl':559 'as-i':350 'audit':889 'autom':79 'avail':13 'back':86,223,354 'baselin':914,919,930 'block':34,112,121,129,133,193,238,270,272,306,311,326,358,361,373,377,390,401,748,777,784,788,803,806,831 'blocknam':334 'blockpath':300,331,397,742,790,808,833,840 'bool':411,645,714 'brows':26,107,260,779 'bulk':78,189 'call':375 'caller':210 'captur':809 'catalog':173,544,552,605,621,854 'chang':190,923 'check':177,186,725,839,917,926 'choic':97 'cleanup':541 'code':62,105,118,539 'common':770 'compar':928 'compil':178,185,724,729,745,751,764,838,913,916,925 'complex':187 'config':44,153,464,886 'configur':251,467,655,681,847,876 'confirm':213,218,228,242,249,256,410,644,713,828,835,861,873,881 'connect':703,711 'constant':440 'content':122,307,378,789,800,807 'context':138 'convent':200 'copi':588 'creat':370,388 'cross':47,161,493,498,894 'cross-refer':46,497 'current':225,289,383,810 'data':325 'dead':538 'default':287,418,641 'descript':562 'devic':166,176,246,253,267,471,479,568,595,598,601,629,639,657,666,679,696,850,862,870,878 'deviceitemnam':633 'devicenam':622,643,676,872,879 'diagnost':500 'diff':823 'direct':54 'display':349 'document':140,317 'edit':130,183,386,813,912 'entri':584 'enumer':264 'equip':172,543,620,853 'error':179,735,843 'errors/warnings':920 'exact':590,616,858 'execut':417,651,720,771 'explicit':215 'explor':69,100 'export':308,465,495 'fall':85 'fals':419 'fbd':321 'file':286 'filter':448,522,527,896 'find':154,537,782,856,903 'first':221,379 'focus':125 'folder':271 'free':577 'free-text':576 'full':752 'generat':63,117 'get':120,305,376,787,805 'graph':322 'gsd/hsp':554 'hardwar':43,146,152,463,466,551,604,885 'ident':660 'identifi':591 'import':363 'includ':553 'indent':819 'input':301 'insert':599 'inspect':42,70,145 'instal':547 'instead':198 'intent':229 'interact':25,57 'interfac':475,662 'introduc':844 'invok':726 'involv':17 'io':483,708 'iosystemnam':705 'ip':148,476 'ipaddress':682,880 'ipv4':685 'item':640 'json':293,457 'lad':320 'list':39,135,142,428,898 'locat':506 'logic':35,115,134,239,359,362,832 'loop':80,188 'mani':192 'mask':691 'mcp':4,10,52,59,66,93,106,119,131,141,150,159,170,184 'modif':76 'modifi':20,355,801 'modul':473 'must':413,647,716 'name':480,558,625,636,697,864 'network':175,245,252,469,474,567,594,597,656,659,869,877 'never':216 'new':628,849 'no-op':422 'note':279,330,396,444,488,515,572,612,675,741 'number':560 'object':158,503,505,891,900 'objectswithoutrefer':532 'objectswithrefer':531 'obtain':381 'omit':749,762 'one':127 'one-shot':126 'op':424 'open':90,196,290 'oper':81 'packag':555 'paramet':276,327,393,441,485,512,569,609,672,738 'pars':347 'pass':212,217,353 'path':283,297,402,785 'pattern':772 'plc':33,268,310,335,338,372,433,452,496,526,731,753,761 'plcname':445,519,755 'plcs':766 'pndevicenam':692 'portal':3,9,23,51,56,549,728 'pre':911 'pre-edit':910 'present':668,798,902 'preserv':816 'profinet':478,695 'project':24,28,101,108,169,261,266,291,608,632,671,780 'projectpath':280,341,425,453,489,516,580,652,721,767 'properti':663 'protect':206,236 'queri':573,855 'rack':472 'read':18,30,110,151,160,222,462,492,773,791,884,893 'record':918 'recurs':263 'refer':48,162,259,494,499,510,895 'referenc':504 'remov':908 'requir':64,208,241,248,255,278,329,395,443,487,514,571,611,674,740 'result':888 'retriev':431 'return':292,296,344,456,583,734 'right':96 'roadmap':91,197 'root':638 'run':45,564 'safeti':199 'scl':319 'scope':53 'scratch':392 'script':83 'sd':37,315,365,408,793 'search':171,542,545,579,619,852 'server':11 'set':658 'shot':128 'show':821 'simat':36,314,364,407,792 'singl':74,165,747 'single-step':73 'situat':98 'skill' 'skill-tia-portal-mcp' 'softwar':269,732,754 'sourc':502 'source-czarnak' 'specif':451,525,760 'state':226 'step':75 'stl':323 'string':281,332,342,346,398,404,426,446,454,490,517,520,528,574,581,614,623,634,653,677,683,688,693,699,706,722,743,756,768 'structur':102,817 'subnet':481,690,701 'subnetmask':687 'subnetnam':698 'support':318 'system':484,709 'tabl':41,144,274,430,435,461 'tag':40,136,143,273,429,434,437,460 'target':72,400,758 'task':16 'text':578 'three':201 'tia':2,8,22,50,55,89,195,548,727 'tia-openness-roadmap':88,194 'tia-portal-mcp':1,49 'tool':60,67,202,233,258,304 'topic-agent-skills' 'topic-claude-code' 'topic-claude-code-plugin' 'topic-claude-skills' 'topic-codex' 'topic-codex-cli' 'topic-codex-plugin' 'topic-gemini' 'topic-gemini-cli' 'topic-gemini-cli-extension' 'topic-gemini-extension' 'topic-mcp' 'topolog':147,470 'tree':29,109,262,294,781 'true':214,219,243,250,257,415,649,718,836,874,882 'type':275,277,328,394,442,486,508,511,513,557,570,610,673,739 'typeidentifi':586,613,859,871 'understand':114,775 'unless':387 'unreferenc':157,899 'unus':155,890 'unusedobject':533,535,897 'updat':132,237,357,360,368,830 'use':5,65,99,295,534 'user':232,439,826,866,905 'v21':550 'valid':406 'valu':298,587,617 'verifi':841,887 'via':58 'warn':737 'without':220 'workflow':84 'write':32,104,205,235 'write-protect':204,234 'yaml':38,316,345,366,384,409,794,811,815 'yamlcont':403,834 'yes':240,247,254,333,399,405,412,575,615,624,646,678,715","prices":[{"id":"bcd21c26-348a-4080-83c5-63d281e00d75","listingId":"e982776a-ed51-4f53-b26c-2f94feebc3ba","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"Czarnak","category":"totally-integrated-claude","install_from":"skills.sh"},"createdAt":"2026-05-18T13:13:58.643Z"}],"sources":[{"listingId":"e982776a-ed51-4f53-b26c-2f94feebc3ba","source":"github","sourceId":"Czarnak/totally-integrated-claude/tia-portal-mcp","sourceUrl":"https://github.com/Czarnak/totally-integrated-claude/tree/main/skills/tia-portal-mcp","isPrimary":false,"firstSeenAt":"2026-05-18T13:13:58.643Z","lastSeenAt":"2026-05-18T19:08:30.462Z"}],"details":{"listingId":"e982776a-ed51-4f53-b26c-2f94feebc3ba","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"Czarnak","slug":"tia-portal-mcp","github":{"repo":"Czarnak/totally-integrated-claude","stars":9,"topics":["agent-skills","claude-code","claude-code-plugin","claude-skills","codex","codex-cli","codex-plugin","gemini","gemini-cli","gemini-cli-extension","gemini-extension","mcp","mcp-server","siemens","skills","tia-openness","tia-portal"],"license":"mit","html_url":"https://github.com/Czarnak/totally-integrated-claude","pushed_at":"2026-05-08T03:14:15Z","description":"A Claude Code plugin for Siemens TIA Portal engineering automation.","skill_md_sha":"0e9e1cc66a5500bf5efc82ad0281c2170a67a7c6","skill_md_path":"skills/tia-portal-mcp/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/Czarnak/totally-integrated-claude/tree/main/skills/tia-portal-mcp"},"layout":"multi","source":"github","category":"totally-integrated-claude","frontmatter":{"name":"tia-portal-mcp","description":"Use when the TIA Portal MCP server is available and the task involves reading or modifying a TIA Portal project interactively: browsing the project tree, reading or writing PLC block logic (SIMATIC SD YAML), listing tag tables, inspecting hardware config, running cross-reference diagnostics, searching the equipment catalog, adding/configuring network devices, or running compile checks. Prefer MCP tools over TIA Openness scripts for single read/write operations; use TIA Openness (tia-python or C# skills) for complex multi-step automation."},"skills_sh_url":"https://skills.sh/Czarnak/totally-integrated-claude/tia-portal-mcp"},"updatedAt":"2026-05-18T19:08:30.462Z"}}