WinCC Unified MCP Server
Un servidor MCP para interactuar con sistemas SCADA SIEMENS WinCC Unified a través de su API GraphQL.
Documentación
WinCC Unified MCP Server
Un servidor de Model Context Protocol (MCP) diseñado para interactuar con sistemas SCADA SIEMENS WinCC Unified a través de su API GraphQL. Este servidor expone diversas funcionalidades de WinCC Unified como herramientas MCP, permitiendo que asistentes de IA y otros clientes compatibles con MCP interactúen con el sistema SCADA.
Características
- Se conecta a un endpoint GraphQL de WinCC Unified.
- Proporciona herramientas MCP para:
- Autenticación de usuarios (
login-user). - Navegación de objetos SCADA (
browse-objects). - Lectura de valores actuales de etiquetas (
get-tag-values). - Consulta de datos históricos/registrados de etiquetas (
get-logged-tag-values). - Obtención de alarmas activas (
get-active-alarms). - Obtención de alarmas registradas (
get-logged-alarms). - Escritura de valores en etiquetas (
write-tag-values). - Confirmación de alarmas (
acknowledge-alarms). - Restablecimiento de alarmas (
reset-alarms).
- Autenticación de usuarios (
- Soporta un mecanismo opcional de inicio de sesión automático con cuenta de servicio y renovación de tokens.
Requisitos previos
- Node.js (se recomienda v18.x o posterior).
- npm (que normalmente viene con Node.js).
- Acceso a un endpoint de servidor GraphQL de WinCC Unified en ejecución.
Configuración
El servidor se configura mediante variables de entorno:
GRAPHQL_URL: Requerido. La URL completa de su servidor GraphQL de WinCC Unified. Ejemplo:https://your-wincc-server.example.com/graphqlGRAPHQL_USR: (Opcional) Nombre de usuario para una cuenta de servicio. Si se proporciona junto conGRAPHQL_PWD, el servidor intentará iniciar sesión con estas credenciales al arrancar y periódicamente (cada minuto) para mantener la sesión. Este token se almacena globalmente y lo utilizan las herramientas si no se ha producido un inicio de sesión específico de usuario.GRAPHQL_PWD: (Opcional) Contraseña para la cuenta de servicio.
Ejemplo de configuración de variables de entorno (Linux/macOS):
export GRAPHQL_URL="http://localhost:4000/graphql"
export GRAPHQL_USR="username1"
export GRAPHQL_PWD="password1"
export NODE_TLS_REJECT_UNAUTHORIZED=0 # Set to 0 to disable TLS certificate validation (development only)
Cómo iniciar
-
Navegue al directorio del proyecto.
-
Instale las dependencias: Si aún no lo ha hecho, instale los paquetes Node.js necesarios:
npm install -
Establezca las variables de entorno: Asegúrese de que las variables de entorno
GRAPHQL_URL(y opcionalmenteGRAPHQL_USR,GRAPHQL_PWD) estén configuradas como se describe en la sección "Configuración". -
Ejecute el servidor: Puede utilizar el script
run.shproporcionado (en Linux/macOS):./run.shEl script
run.shejecutaexport NODE_TLS_REJECT_UNAUTHORIZED=0antes de iniciar el servidor connode index.js. El ajusteNODE_TLS_REJECT_UNAUTHORIZED=0desactiva la validación de certificados TLS, lo que puede ser necesario si su servidor GraphQL de WinCC Unified utiliza HTTPS con un certificado autofirmado o emitido internamente. Advertencia: Desactivar la validación de certificados (NODE_TLS_REJECT_UNAUTHORIZED=0) solo debe hacerse en entornos de desarrollo confiables o redes internas, ya que omite comprobaciones de seguridad importantes.Alternativamente, puede ejecutar el servidor directamente:
# On Linux/macOS, if your GraphQL server uses HTTPS with a self-signed certificate: # export NODE_TLS_REJECT_UNAUTHORIZED=0 # On Windows (PowerShell), if needed: # $env:NODE_TLS_REJECT_UNAUTHORIZED = "0" node index.js
El servidor MCP se iniciará y escuchará en el puerto 3000 por defecto. Puede configurar el puerto mediante la variable de entorno MCP_PORT:
MCP_PORT=8080 node index.js
Las solicitudes MCP se esperan en el endpoint /mcp (por ejemplo, http://localhost:3000/mcp).
Aviso legal
Aviso de seguridad: Este servidor no ha sido endurecido ni asegurado para uso en producción. Es responsabilidad del usuario implementar las medidas de seguridad adecuadas (como autenticación, autorización, restricciones de red y HTTPS) antes de implementar o exponer este servidor en cualquier entorno.
Conexión con un cliente de Claude Desktop
Para utilizar este servidor MCP con la aplicación de escritorio Claude AI (u otros clientes que admitan mcp-remote), debe configurar el cliente para conectarse a este servidor. Para la aplicación Claude Desktop, esto se hace típicamente editando un archivo claude_desktop_config.json. La ubicación de este archivo varía según el sistema operativo, pero generalmente se encuentra dentro del directorio de soporte o configuración de la aplicación Claude.
Agregue o actualice la sección mcpServers en su archivo claude_desktop_config.json de la siguiente manera:
{
"mcpServers": {
"WinCC Unified": {
"command": "npx",
"args": ["mcp-remote", "http://localhost:3000/mcp"]
}
}
}
Explicación:
"WinCC Unified": Este es un nombre definido por el usuario para esta conexión de servidor que aparecerá en la aplicación Claude. Puede cambiarlo a algo significativo para usted (por ejemplo,"WinCC_Unified_Plant_A")."command": "npx": Esto le indica al cliente que usenpx(Node Package Execute) para ejecutar la herramientamcp-remote."args": ["mcp-remote", "http://localhost:3000/mcp"]:mcp-remote: Este es el cliente MCP de línea de comandos. Asegúrese de quenpxpueda encontrarlo. Es posible que necesite instalar@modelcontextprotocol/toolsglobalmente (npm install -g @modelcontextprotocol/tools) o tenerlo disponible en un contexto de proyecto accesible pornpx.http://localhost:3000/mcp: Esta es la URL donde su servidor MCP de WinCC Unified está escuchando. Ajuste el nombre de host y el puerto si su servidor se ejecuta en otro lugar o en un puerto diferente.
Después de guardar esta configuración, reinicie su aplicación Claude Desktop. Ahora debería mostrar "WinCC Unified" (o el nombre que haya elegido) como un servidor MCP disponible, permitiéndole usar sus herramientas.
Herramientas disponibles
El servidor expone las siguientes herramientas para interactuar con WinCC Unified:
-
login-user: Inicia sesión de un usuario en WinCC Unified usando nombre de usuario y contraseña. Almacena el token de sesión para solicitudes posteriores. Es opcional, porque el servidor MCP podría iniciarse de manera que realice automáticamente un inicio de sesión con la cuenta de servicio. -
browse-objects: Consulta etiquetas, elementos, tipos, alarmas, etiquetas de registro y básicamente cualquier cosa que tenga un nombre configurado, según los criterios de filtro proporcionados. -
get-tag-values: Consulta valores de etiquetas de WinCC Unified. Basado en la lista de nombres proporcionada. Si directRead es verdadero, los valores se toman directamente del PLC. -
get-logged-tag-values: Consulta valores de etiquetas registrados de la base de datos. -
get-active-alarms: Consulta alarmas activas de los sistemas proporcionados. -
get-logged-alarms: Consulta alarmas registradas del sistema de almacenamiento. -
write-tag-values: Actualiza etiquetas, basado en la lista TagValueInput proporcionada. -
acknowledge-alarms: Confirma una o más alarmas. Cada identificador de alarma debe tener el nombre de la alarma configurada y, opcionalmente, un instanceID. Si el instanceID es 0 o no se proporciona, se confirmarán todas las instancias de la alarma dada. -
reset-alarms: Restablece una o más alarmas. Cada identificador de alarma debe tener el nombre de la alarma configurada y, opcionalmente, un instanceID. Si el instanceID es 0 o no se proporciona, se restablecerán todas las instancias de la alarma dada.