Conectar un asistente de IA a TIA Portal con MCP (Claude Desktop, Claude Code y otros clientes)
Traducción al español. Original en inglés: connect-ai-assistant-mcp.md.
Un asistente de IA puede leer y editar un proyecto de TIA Portal V21 mediante MCP. El servidor MCP tia es un pequeño
paquete npm que habla con la app serve de PLCWare, el programa de Windows que hace el trabajo con Openness. El asistente
prepara el trabajo; una persona aprueba todo lo que llega a un PLC real. Esta guía conecta ambos. Es válida para
TIA Portal V21.
[ tu cliente de IA ] --(MCP/stdio)--> [ MCP tia (npx) ] --(HTTP)--> [ serve (Windows + TIA Portal V21) ]Qué necesitas
- Una máquina Windows con TIA Portal V21 y la app PLCWare (
serve) en ejecución con una licencia activada. En la app de la bandeja, pestaña License: pega tu clave y guarda; pestaña API: Start API (puerto por defecto 5000). Desde la línea de comandos:TIAOpenness.exe serve 5000. - Node.js (versión 20 o posterior) en la máquina que ejecuta tu cliente de IA. El MCP se ejecuta con
npx, así que no hay nada más que instalar. - Un ajuste,
TIA_API_BASE, la dirección deserve. El MCP no envía ninguna clave: lo que activa la app es la licencia del host.
Claude Code
Un comando, a nivel de usuario (vale para todos tus proyectos):
claude mcp add tia --scope user -e TIA_API_BASE=http://localhost:5000 -- npx -y @renanlido/tia-openness-mcpPon primero el nombre del servidor (tia). -e acepta varios valores, y Claude Code 2.1.238 rechazó --env KEY=VALUE
escrito antes del nombre. Comprueba con claude mcp list, que debe mostrar tia como conectado, y con /mcp dentro de
una sesión.
Claude Desktop
Edita claude_desktop_config.json. En Claude Desktop, Settings > Developer > Edit Config lo abre:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"tia": {
"command": "npx",
"args": ["-y", "@renanlido/tia-openness-mcp"],
"env": { "TIA_API_BASE": "http://localhost:5000" }
}
}
}Reinicia la app. En Windows, empieza con npx simple, como arriba. Si el cliente avisa de que el servidor no pudo
iniciarse, usa la forma con cmd /c, que solo existe en Windows:
"command": "cmd", "args": ["/c", "npx", "-y", "@renanlido/tia-openness-mcp"]Mantén una sola entrada tia: dos servidores hablarían con el mismo serve, que ejecuta una operación a la vez.
Otros clientes
Codex, Gemini CLI, Cursor, VS Code y Windsurf usan el mismo comando, npx -y @renanlido/tia-openness-mcp, y la misma
variable TIA_API_BASE; solo cambia el lugar donde cada cliente guarda su configuración. El formato exacto de cada uno
está en el Manual de instalación.
Cuando tu cliente de IA está en otra máquina
Una disposición habitual es un editor en un Mac y serve en una VM Windows. En el lado de Windows, permite el acceso
remoto en la app de la bandeja (pestaña API, Allow remote access..., que reserva la URL y abre el puerto en el
cortafuegos), define el host como 0.0.0.0 e inicia la API; desde la línea de comandos,
TIAOpenness.exe serve 5000 --host 0.0.0.0. La licencia debe estar activada en esa máquina. En el lado del cliente,
pon la dirección de la VM en la propia entrada del MCP, en lugar de http://localhost:5000. El TIA_API_BASE de la
entrada es lo que lee el MCP: una variable exportada en tu shell no lo sustituye.
En Claude Code, añade el servidor de nuevo con la dirección de la VM (si tia ya está registrado, elimínalo antes con
claude mcp remove tia):
claude mcp add tia --scope user -e TIA_API_BASE=http://<ip-de-la-vm>:5000 -- npx -y @renanlido/tia-openness-mcpEn Claude Desktop y en los demás clientes que guardan una configuración en JSON, cambia el valor en el archivo:
"env": { "TIA_API_BASE": "http://<ip-de-la-vm>:5000" }Después, abre una sesión nueva, o reinicia la app, para que el MCP arranque con la nueva dirección.
La licencia activa el servidor; no identifica a quien lo llama. Controla el acceso con un cortafuegos o una VPN.
Comprueba la conexión
Pide al asistente que llame a tia_ping. Responde { base, reachable, activated, latencyMs, hint }:
reachable: false: la dirección, el puerto o el cortafuegos están mal, oserveno está en ejecución.activated: false: la licencia del host falta o no es válida.- Ambos
true:servees alcanzable y está activado. Eso no es lo mismo que listo: llama atia_readinesspara comprobar el grupo de Windows, x64 y la instalación de TIA Portal (Configurar TIA Portal Openness en Windows).
Después, tia_status y tia_connect abren o se acoplan a un proyecto. La primera conexión de un proceso serve puede
mostrar un aviso de seguridad en TIA Portal en la máquina Windows, y solo una persona puede responderlo.
Qué pedir
- "Lista los bloques de PLC_1 y dime cuáles no son consistentes." (
tia_plc_blocks) - "Exporta FB_Motor y comprueba que coincide con el archivo de git." (
tia_export_block,tia_block_compare) - "Escribe un bloque de función SCL que haga X, ponlo en el proyecto y compila." (
tia_source_put,tia_compile) - "Compila PLC_1 y resume los errores." (
tia_compile)
Las herramientas se agrupan por lo que pueden cambiar: las lecturas (clase R) no cambian nada; los cambios offline (clase M-off) editan el proyecto pero nunca tocan un PLC; unas pocas herramientas con compuerta llegan al mundo físico.
Lo que el asistente no puede hacer solo
- Cargar en un PLC.
tia_downloadprimero devuelve un plan y unplanHashde un solo uso para que una persona lo revise; solo cuando la persona aprueba vuelve a ejecutarse conapproved: truey el mismoplanHash. Si el software cambió entretanto,serverechaza con409 plan_stale. El asistente nunca aprueba. - Ponerse online, subir una estación, escanear la red. Cada uno es una compuerta que requiere a una persona.
- Secretos. Un secreto maestro, una contraseña de know-how, una contraseña de certificado o la política de contraseñas siempre las aporta una persona. El asistente nunca inventa una.
- Lógica de seguridad (F). Nunca se crea, cambia ni carga de forma autónoma.
- Dos cosas a la vez.
servetiene un único worker serie. Las operaciones largas (conectar, compilar, cargar...) pueden responderstatus: "running"con unjobId; el asistente espera entonces contia_job_statusen lugar de repetir la llamada.
Modo solo lectura
Para probar el MCP sin riesgo de escritura, pon TIA_MCP_MODE en read-only en el env del servidor:
"env": { "TIA_API_BASE": "http://localhost:5000", "TIA_MCP_MODE": "read-only" }El MCP registra entonces solo las herramientas de lectura: ni siquiera se lista una herramienta que cambie el proyecto o
toque un controlador. Como tia_start y tia_connect no son herramientas de lectura, el asistente no puede abrir un
proyecto en este modo: el proyecto ya debe estar abierto en serve.
Esto protege frente al asistente, no frente a una persona: vive en el MCP, y los scopes de la licencia en serve siguen
siendo la autoridad. Una versión del MCP anterior al modo ignora la variable y registra todas las herramientas, así que
comprueba npx -y @renanlido/tia-openness-mcp --version (la opción existe desde la 1.9.2) y confirma en tu cliente que
una herramienta de escritura, como tia_compile, no aparece.
Qué plan hace qué
Basic lee el proyecto, edita offline (bloques, tags, hardware) y compila. Pro añade cargar en un PLC real y ponerse online, siempre tras las compuertas humanas de arriba. La prueba de 30 días incluye los permisos (scopes) de Pro.
Para un flujo guiado, desde una especificación hasta un proyecto verificado, el plugin de código abierto
tia-harness para Claude Code añade skills y subagentes sobre el mismo MCP.
Guías relacionadas
- Configurar TIA Portal Openness en Windows
- Compilar un PLC desde código y leer los mensajes
- Manual de instalación
- Todas las guías
Empieza la prueba gratuita de 30 días
PLCWare ejecuta estos pasos por ti, o por tu asistente de IA, sobre TIA Portal V21. La prueba dura 30 días, incluye los permisos (scopes) de Pro, no pide tarjeta y no se renueva. Necesitas TIA Portal V21 con licencia STEP 7 Professional, que se compra aparte a Siemens.
Empezar la prueba gratuita de 30 días · Descargar la app
TIA Portal, SIMATIC y Siemens son marcas de Siemens AG. PLCWare es un producto independiente para TIA Portal y no tiene vínculo con Siemens ni cuenta con su respaldo.