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
)
- ✅ User authentication (
- 🔄 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
- Navigate to the project folder:
cd your-project-directory
- Install dependencies:
npm install
Edit config.js as shown above.
Start the server
node start
🖥️ 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:
{
"mcpServers": {
"ThinkPLC-MCP": {
"command": "npx",
"args": ["mcp-remote", "http://localhost:5000/mcp"]
}
}
}
- Ensure @modelcontextprotocol/tools is installed:
npm install -g @modelcontextprotocol/tools