ThinkPLC-MCP

Interfaceie com o CLP SIEMENS S7-1500/1200 usando sua API JSON-RPC 2.0, expondo funcionalidades do CLP como ferramentas MCP para interação programática.

Documentação

ThinkPLC-MCP

ThinkPLC-MCP é um servidor projetado para interfacear com SIEMENS PLC S7-1500/1200 usando sua API JSON-RPC 2.0. Ele expõe as funcionalidades da API como ferramentas MCP, permitindo que assistentes de IA e outros clientes compatíveis com MCP interajam com o PLC programaticamente.


🔧 Recursos

  • Conecta-se a um endpoint SIEMENS PLC API (Webserver)
  • Fornece ferramentas MCP para:
    • ✅ Autenticação de usuário (login, logout, ChangePassword-user)
    • ✅ Verificar conectividade do PLC (ping)
    • ✅ Recuperar permissões de usuário via Api-GetPermissions após o login
    • ✅ Obter a versão da API com Api-Version
    • ✅ Listar métodos de API disponíveis usando Api-Browse
    • ✅ Recuperar informações de estrutura com Api-GetQuantityStructures
    • ✅ Obter políticas de segurança de senha com Api-GetPasswordPolicy
    • ✅ Navegar por tags e metadados usando PlcProgram-Browse
    • ✅ Ler variáveis individuais via PlcProgram-Read
    • ✅ Escrever tags Boolean, Number ou String com PlcProgram-Write-*
    • ✅ Ler o modo de operação atual da CPU com Plc-ReadOperatingMode
    • ✅ Solicitar uma mudança de modo de operação usando Plc-RequestChangeOperatingMode
    • ✅ Ler o horário do sistema da CPU (Plc-ReadSystemTime)
    • ✅ Definir o horário do sistema da CPU (Plc-SetSystemTime)
    • ✅ Ler idiomas de projeto disponíveis (Project-ReadLanguages)
    • ✅ Navegar por alarmes ativos (Alarms-Browse)
    • ✅ Confirmar alarmes (Alarms-Acknowledge)
    • ✅ Navegar por entradas do buffer de diagnóstico (DiagnosticBuffer-Browse)
  • 🔄 Opcional: login automático de conta de serviço com renovação de token

⚙️ Pré-requisitos

  • Node.js (v18.x ou posterior recomendado)
  • npm (incluído com Node.js)
  • Acesso a um SIEMENS PLC API (Webserver) em execução

⚙️ Configuração

Este servidor usa um arquivo config.js escrito em sintaxe ES Module.

Exemplo de config.js:

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

🚀 Começando

  1. Navegue até a pasta do projeto:
cd your-project-directory
  1. Instale as dependências:
npm install
  1. Edite o config.js conforme mostrado acima.

  2. Inicie o servidor

node start

🖥️ Conectando com Claude Desktop

Para usar este servidor MCP com Claude AI (versão desktop):

  1. Encontre ou crie o arquivo claude_desktop_config.json (normalmente na pasta de configuração do aplicativo Claude).

  2. Adicione ou atualize o seguinte:

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