ThinkPLC-MCP

Interfaz con SIEMENS PLC S7-1500/1200 usando su API JSON-RPC 2.0, exponiendo funcionalidades del PLC como herramientas MCP para interacción programática.

Documentación

ThinkPLC-MCP

ThinkPLC-MCP es un servidor diseñado para interactuar con SIEMENS PLC S7-1500/1200 mediante su API JSON-RPC 2.0. Expone las funcionalidades de la API como herramientas MCP, permitiendo que asistentes de IA y otros clientes compatibles con MCP interactúen con el PLC de forma programática.


🔧 Características

  • Se conecta a un endpoint de la API SIEMENS PLC (Webserver)
  • Proporciona herramientas MCP para:
    • ✅ Autenticación de usuario (login, logout, ChangePassword-user)
    • ✅ Verificar la conectividad del PLC (ping)
    • ✅ Obtener permisos de usuario mediante Api-GetPermissions después del inicio de sesión
    • ✅ Obtener la versión de la API con Api-Version
    • ✅ Listar los métodos disponibles de la API usando Api-Browse
    • ✅ Obtener información de estructura con Api-GetQuantityStructures
    • ✅ Obtener políticas de seguridad de contraseñas con Api-GetPasswordPolicy
    • ✅ Explorar etiquetas y metadatos usando PlcProgram-Browse
    • ✅ Leer variables individuales mediante PlcProgram-Read
    • ✅ Escribir etiquetas Boolean, Number o String con PlcProgram-Write-*
    • ✅ Leer el modo de operación actual de la CPU con Plc-ReadOperatingMode
    • ✅ Solicitar un cambio de modo de operación usando Plc-RequestChangeOperatingMode
    • ✅ Leer la hora del sistema de la CPU (Plc-ReadSystemTime)
    • ✅ Establecer la hora del sistema de la CPU (Plc-SetSystemTime)
    • ✅ Leer los idiomas disponibles del proyecto (Project-ReadLanguages)
    • ✅ Explorar alarmas activas (Alarms-Browse)
    • ✅ Confirmar alarmas (Alarms-Acknowledge)
    • ✅ Explorar entradas del buffer de diagnóstico (DiagnosticBuffer-Browse)
  • 🔄 Opcional: inicio de sesión automático de cuenta de servicio con renovación de token

⚙️ Requisitos previos

  • Node.js (se recomienda v18.x o posterior)
  • npm (incluido con Node.js)
  • Acceso a una API SIEMENS PLC (Webserver) en ejecución

⚙️ Configuración

Este servidor utiliza un archivo config.js escrito en sintaxis de Módulo ES.

Ejemplo config.js:

export const config = {
  URL: "https://<PLC-IP-Address>/api/jsonrpc", // required
  userName: "your-username", // optional
  pwr: "your-password", // optional
};

🚀 Primeros pasos

  1. Navegue a la carpeta del proyecto:
cd your-project-directory
  1. Instale las dependencias:
npm install
  1. Edite config.js como se muestra arriba.

  2. Inicie el servidor

node start

🖥️ Conexión con Claude Desktop

Para usar este servidor MCP con Claude AI (versión de escritorio):

  1. Busque o cree el archivo claude_desktop_config.json (normalmente en la carpeta de configuración de la aplicación Claude).

  2. Agregue o actualice lo siguiente:

{
  "mcpServers": {
    "ThinkPLC-MCP": {
      "command": "npx",
      "args": ["mcp-remote", "http://localhost:5000/mcp"]
    }
  }
}
  1. Asegúrese de que @modelcontextprotocol/tools esté instalado:
npm install -g @modelcontextprotocol/tools