Read and monitor WAGO PLC parameters over the WDA REST API. Read-only unless writes are allowed.
registry version 2.4.6
Python
uvx wago-plc-mcp-serverPython
uvx wago-plc-mcp-server@2.4.6Docker
docker run -i --rm docker.io/wagoalex/wago-plc-mcp-server:2.4.6
Pick your client — the config below is generated for this server (local stdio). Copy respects the “Pin version” switch above.
claude_desktop_config.json
{
"mcpServers": {
"wago-plc-mcp-server": {
"command": "uvx",
"args": [
"wago-plc-mcp-server"
],
"env": {
"TRANSPORT": "<YOUR_TRANSPORT>",
"WAGO_PLC_HOSTS": "<YOUR_WAGO_PLC_HOSTS>",
"DEFAULT_PLC_USERNAME": "<YOUR_DEFAULT_PLC_USERNAME>",
"DEFAULT_PLC_PASSWORD": "<YOUR_DEFAULT_PLC_PASSWORD>",
"WAGO_ALLOW_WRITES": "<YOUR_WAGO_ALLOW_WRITES>"
}
}
}
}{
"mcpServers": {
"wago-plc-mcp-server": {
"command": "uvx",
"args": [
"wago-plc-mcp-server@2.4.6"
],
"env": {
"TRANSPORT": "<YOUR_TRANSPORT>",
"WAGO_PLC_HOSTS": "<YOUR_WAGO_PLC_HOSTS>",
"DEFAULT_PLC_USERNAME": "<YOUR_DEFAULT_PLC_USERNAME>",
"DEFAULT_PLC_PASSWORD": "<YOUR_DEFAULT_PLC_PASSWORD>",
"WAGO_ALLOW_WRITES": "<YOUR_WAGO_ALLOW_WRITES>"
}
}
}
}Format verified against the official Claude Desktop docs ↗.
terminal
claude mcp add --env TRANSPORT=<YOUR_TRANSPORT> --env WAGO_PLC_HOSTS=<YOUR_WAGO_PLC_HOSTS> --env DEFAULT_PLC_USERNAME=<YOUR_DEFAULT_PLC_USERNAME> --env DEFAULT_PLC_PASSWORD=<YOUR_DEFAULT_PLC_PASSWORD> --env WAGO_ALLOW_WRITES=<YOUR_WAGO_ALLOW_WRITES> wago-plc-mcp-server -- uvx wago-plc-mcp-server
claude mcp add --env TRANSPORT=<YOUR_TRANSPORT> --env WAGO_PLC_HOSTS=<YOUR_WAGO_PLC_HOSTS> --env DEFAULT_PLC_USERNAME=<YOUR_DEFAULT_PLC_USERNAME> --env DEFAULT_PLC_PASSWORD=<YOUR_DEFAULT_PLC_PASSWORD> --env WAGO_ALLOW_WRITES=<YOUR_WAGO_ALLOW_WRITES> wago-plc-mcp-server -- uvx wago-plc-mcp-server@2.4.6
Format verified against the official Claude Code docs ↗.
.cursor/mcp.json
{
"mcpServers": {
"wago-plc-mcp-server": {
"command": "uvx",
"args": [
"wago-plc-mcp-server"
],
"env": {
"TRANSPORT": "<YOUR_TRANSPORT>",
"WAGO_PLC_HOSTS": "<YOUR_WAGO_PLC_HOSTS>",
"DEFAULT_PLC_USERNAME": "<YOUR_DEFAULT_PLC_USERNAME>",
"DEFAULT_PLC_PASSWORD": "<YOUR_DEFAULT_PLC_PASSWORD>",
"WAGO_ALLOW_WRITES": "<YOUR_WAGO_ALLOW_WRITES>"
}
}
}
}{
"mcpServers": {
"wago-plc-mcp-server": {
"command": "uvx",
"args": [
"wago-plc-mcp-server@2.4.6"
],
"env": {
"TRANSPORT": "<YOUR_TRANSPORT>",
"WAGO_PLC_HOSTS": "<YOUR_WAGO_PLC_HOSTS>",
"DEFAULT_PLC_USERNAME": "<YOUR_DEFAULT_PLC_USERNAME>",
"DEFAULT_PLC_PASSWORD": "<YOUR_DEFAULT_PLC_PASSWORD>",
"WAGO_ALLOW_WRITES": "<YOUR_WAGO_ALLOW_WRITES>"
}
}
}
}Format verified against the official Cursor docs ↗.
.vscode/mcp.json
{
"servers": {
"wago-plc-mcp-server": {
"command": "uvx",
"args": [
"wago-plc-mcp-server"
],
"env": {
"TRANSPORT": "<YOUR_TRANSPORT>",
"WAGO_PLC_HOSTS": "<YOUR_WAGO_PLC_HOSTS>",
"DEFAULT_PLC_USERNAME": "<YOUR_DEFAULT_PLC_USERNAME>",
"DEFAULT_PLC_PASSWORD": "<YOUR_DEFAULT_PLC_PASSWORD>",
"WAGO_ALLOW_WRITES": "<YOUR_WAGO_ALLOW_WRITES>"
}
}
}
}{
"servers": {
"wago-plc-mcp-server": {
"command": "uvx",
"args": [
"wago-plc-mcp-server@2.4.6"
],
"env": {
"TRANSPORT": "<YOUR_TRANSPORT>",
"WAGO_PLC_HOSTS": "<YOUR_WAGO_PLC_HOSTS>",
"DEFAULT_PLC_USERNAME": "<YOUR_DEFAULT_PLC_USERNAME>",
"DEFAULT_PLC_PASSWORD": "<YOUR_DEFAULT_PLC_PASSWORD>",
"WAGO_ALLOW_WRITES": "<YOUR_WAGO_ALLOW_WRITES>"
}
}
}
}Format verified against the official VS Code docs ↗.
mcp_config.json
{
"mcpServers": {
"wago-plc-mcp-server": {
"command": "uvx",
"args": [
"wago-plc-mcp-server"
],
"env": {
"TRANSPORT": "<YOUR_TRANSPORT>",
"WAGO_PLC_HOSTS": "<YOUR_WAGO_PLC_HOSTS>",
"DEFAULT_PLC_USERNAME": "<YOUR_DEFAULT_PLC_USERNAME>",
"DEFAULT_PLC_PASSWORD": "<YOUR_DEFAULT_PLC_PASSWORD>",
"WAGO_ALLOW_WRITES": "<YOUR_WAGO_ALLOW_WRITES>"
}
}
}
}{
"mcpServers": {
"wago-plc-mcp-server": {
"command": "uvx",
"args": [
"wago-plc-mcp-server@2.4.6"
],
"env": {
"TRANSPORT": "<YOUR_TRANSPORT>",
"WAGO_PLC_HOSTS": "<YOUR_WAGO_PLC_HOSTS>",
"DEFAULT_PLC_USERNAME": "<YOUR_DEFAULT_PLC_USERNAME>",
"DEFAULT_PLC_PASSWORD": "<YOUR_DEFAULT_PLC_PASSWORD>",
"WAGO_ALLOW_WRITES": "<YOUR_WAGO_ALLOW_WRITES>"
}
}
}
}Format verified against the official Windsurf docs ↗.
Defined in the server's official registry manifest. Required secrets are shown as <YOUR_…> placeholders in the configs above.
TRANSPORT required — MCP transport. Fixed to stdio for this package.WAGO_PLC_HOSTS required — Comma-separated IPs of the WAGO PLCs, reachable from this machineDEFAULT_PLC_USERNAME required — WBM username on the PLCsDEFAULT_PLC_PASSWORD required secret — WBM password, same on all listed PLCsWAGO_TIMEOUT_SECONDS — WDA request timeout. CC100 needs 45 or more, other controllers work with 15WAGO_ALLOW_WRITES required — true lets the agent change parameters, run methods and upload files. Anything else keeps every PLC read-onlyAUDIT_LOG_FILE — Optional path for the tamper-evident audit log of writes and refusals⭐ 4 stars · 最近更新于 30 天前
Distributed as Python, Docker, listed under Developer Tools. Review our MCP security guide before granting access to real data.
Run the install command shown above, then paste the config for your client (Claude Desktop, Claude Code, Cursor, VS Code or Windsurf) into its MCP settings and restart the client.
The MCP server itself is free to install. The source is public on https://github.com/WagoAlex/wago-plc-mcp-server. Any third-party service it calls may require its own API key and account.
Any MCP-compatible client can use it, including Claude Desktop, Claude Code, Cursor, VS Code, Windsurf and custom agents.
Publish this server? Link back with a badge on your README or site — copy either snippet.
Markdown
[](https://mcpnav.net/server/wago-plc-mcp-server/)
HTML
<a href="https://mcpnav.net/server/wago-plc-mcp-server/"><img src="https://mcpnav.net/badge/wago-plc-mcp-server.svg" alt="Listed on MCPNav" height="20"></a>