# 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](https://nodejs.org/) (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`: ```js export const config = { URL: "https:///api/jsonrpc", // required userName: "your-username", // optional pwr: "your-password", // optional }; ``` ## 🚀 Getting Started 1. Navigate to the project folder: ```bash cd your-project-directory ``` 2. Install dependencies: ```bash npm install ``` 3. Edit config.js as shown above. 4. Start the server ```bash 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: ```json { "mcpServers": { "ThinkPLC-MCP": { "command": "npx", "args": ["mcp-remote", "http://localhost:5000/mcp"] } } } ``` 4. Ensure @modelcontextprotocol/tools is installed: ```bash npm install -g @modelcontextprotocol/tools ```