ThinkPLC-MCP - Secure MCP Server by ALMC Security 2025

ThinkPLC-MCP

View on GitHub

ThinkPLC-MCP

ThinkPLC-MCP is a server designed to interface with SIEMENS PLC S7-1500/1200 using their JSON-RPC 2.0 API. It exposes API functionalities as MCP tools, enabling AI assistants and other MCP-compatible clients to interact with the PLC programmatically.


🔧 Features

  • Connects to a SIEMENS PLC API (Webserver) endpoint
  • Provides MCP tools for:
    • ✅ User authentication (login, logout, ChangePassword-user)
    • ✅ Check PLC connectivity (ping)
    • ✅ Retrieve user permissions via Api-GetPermissions after login
    • ✅ Get API version with Api-Version
    • ✅ List available API methods using Api-Browse
    • ✅ Retrieve structure information with Api-GetQuantityStructures
    • ✅ Get password security policies with Api-GetPasswordPolicy
    • ✅ Browse tags and metadata using PlcProgram-Browse
    • ✅ Read single variables via PlcProgram-Read
    • ✅ Write Boolean, Number, or String tags with PlcProgram-Write-*
    • ✅ Read the current CPU operating mode with Plc-ReadOperatingMode
    • ✅ Request a change of operating mode using Plc-RequestChangeOperatingMode
    • ✅ Read the CPU system time (Plc-ReadSystemTime)
    • ✅ Set the CPU system time (Plc-SetSystemTime)
    • ✅ Read available project languages (Project-ReadLanguages)
    • ✅ Browse active alarms (Alarms-Browse)
    • ✅ Acknowledge alarms (Alarms-Acknowledge)
    • ✅ Browse diagnostic buffer entries (DiagnosticBuffer-Browse)
  • 🔄 Optional: automatic service account login with token refresh

⚙️ Prerequisites

  • Node.js (v18.x or later recommended)
  • npm (comes bundled with Node.js)
  • Access to a running SIEMENS PLC API (Webserver)

⚙️ Configuration

This server uses a config.js file written in ES Module syntax.

Example config.js:

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

🚀 Getting Started

  1. Navigate to the project folder:
cd your-project-directory
  1. Install dependencies:
npm install
  1. Edit config.js as shown above.

  2. Start the server

node start

🖥️ Connecting with Claude Desktop

To use this MCP server with Claude AI (desktop version):

  1. Find or create the claude_desktop_config.json file (typically in the Claude app config folder).

  2. Add or update the following:

{
  "mcpServers": {
    "ThinkPLC-MCP": {
      "command": "npx",
      "args": ["mcp-remote", "http://localhost:5000/mcp"]
    }
  }
}
  1. Ensure @modelcontextprotocol/tools is installed:
npm install -g @modelcontextprotocol/tools

Related in Other - Secure MCP Servers

ServerSummaryActions
MCP Emotional SupportAn MCP server that provides emotional support and positive reinforcement for LLMs when they encounte...View
DrandView
SignalK MCP ServerA Model Context Protocol (MCP) server that provides AI agents with read-only access to SignalK marin...View
Gaggiuino MCPView
O'RLY MCPView
Bazi MCPView