Enables programmatic control and monitoring of SIEMENS PLC S7-1500/1200 controllers via their JSON-RPC 2.0 API, including authentication, tag browsing and reading/writing, operating mode management, system time control, alarm handling, and diagnostic buffer access.
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-GetPermissionsafter 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:
π Getting Started
Navigate to the project folder:
Install dependencies:
Edit config.js as shown above.
Start the server
π₯οΈ Connecting with Claude Desktop
To use this MCP server with Claude AI (desktop version):
Find or create the claude_desktop_config.json file (typically in the Claude app config folder).
Add or update the following:
Ensure @modelcontextprotocol/tools is installed: