Skip to main content
Glama
mrwan84

WinCC Unified MCP XT

by mrwan84
README.md
# WinCC Unified MCP XT

A **Model Context Protocol (MCP)** server designed to interface with **SIEMENS WinCC Unified SCADA systems** via their **GraphQL API**.
This server exposes various WinCC Unified functionalities as MCP tools, enabling AI assistants and other MCP-compatible clients to interact programmatically with the SCADA system.
### This project is based on the repository by [Andreas Vogler](https://github.com/vogler75/winccua-mcp-server)

---

## 🔧 Features

- Connects to a WinCC Unified GraphQL endpoint.
- Provides MCP tools for:
  - ✅ User authentication (`login-user`)
  - 📂 Browsing SCADA objects (`browse-objects`)
  - 📊 Reading current tag values (`get-tag-values`)
  - 🕒 Querying historical/logged tag data (`get-logged-tag-values`)
  - 🚨 Fetching active alarms (`get-active-alarms`)
  - 📁 Fetching logged alarms (`get-logged-alarms`)
  - ✍️ Writing values to tags (`write-tag-values`)
  - 🟢 Acknowledging alarms (`acknowledge-alarms`)
  - 🔄 Resetting alarms (`reset-alarms`)
- Optional automatic service account login with token refresh mechanism.

---

## ⚙️ Prerequisites

- [Node.js](https://nodejs.org/) (v18.x or newer recommended)
- npm (comes with Node.js)
- Access to a running **WinCC Unified GraphQL** server endpoint

## ⚙️ Configuration

this server uses a `config.js` file written in ES module syntax.

### `config.js` (ESM) example:

```js
export const config = {
  URL: "https://your-wincc-server.example.com/graphql", // required
  userName: "service_account_username", // optional
  pwr: "service_account_password", // optional
};
```

## 🚀 How to Start

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": {
    "WinCC Unified": {
      "command": "npx",
      "args": ["mcp-remote", "http://localhost:3000/mcp"]
    }
  }
}
```

4. Ensure @modelcontextprotocol/tools is installed:

```bash
npm install -g @modelcontextprotocol/tools
```

### 🧰 Available MCP Tools

| Tool                    | Description                        |
| ----------------------- | ---------------------------------- |
| `login-user`            | Logs in with username/password.    |
| `browse-objects`        | Browses configured SCADA elements. |
| `get-tag-values`        | Retrieves live tag values.         |
| `get-logged-tag-values` | Gets historical tag data.          |
| `get-active-alarms`     | Lists currently active alarms.     |
| `get-logged-alarms`     | Shows previously triggered alarms. |
| `write-tag-values`      | Updates one or more tags.          |
| `acknowledge-alarms`    | Acknowledges alarms.               |
| `reset-alarms`          | Resets alarms.                     |

### 📝 Notes

- If configured, a service account is automatically logged in and token refreshed every minute.

- A user's manual login overrides the service session temporarily.