plc-mcp-server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@plc-mcp-server What are the current alarm statuses on the main line?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
PLC MCP Server
A Model Context Protocol (MCP) server for industrial PLC integration. Enables AI assistants to read tags, monitor alarms, and interact with Allen-Bradley ControlLogix PLCs using natural language.
Features
π Tag Operations - Read/write PLC tags
π¨ Alarm Management - View and acknowledge alarms
π Diagnostics - PLC status, I/O health, connection info
π Safety First - Read-only by default, write whitelist, audit logging
π MCP Standard - Works with Claude Desktop, Cursor, and any MCP client
Related MCP server: ignition-mcp
Quick Start
# Install dependencies
pip install -r requirements.txt
# Configure your PLC connection
cp config.example.yaml config.yaml
# Edit config.yaml with your PLC IP and settings
# Run the server (stdio mode for MCP)
python -m plc_mcp_server
# Or run in HTTP/SSE mode
python -m plc_mcp_server --transport sse --port 8080Claude Desktop Configuration
Add to claude_desktop_config.json:
{
"mcpServers": {
"plc": {
"command": "python",
"args": ["-m", "plc_mcp_server"],
"cwd": "/path/to/plc-mcp-server"
}
}
}Project Structure
plc-mcp-server/
βββ plc_mcp_server/
β βββ __init__.py
β βββ __main__.py # Entry point
β βββ server.py # MCP server implementation
β βββ plc/
β β βββ __init__.py
β β βββ client.py # PLC connection manager
β β βββ allen_bradley.py # ControlLogix driver
β β βββ siemens.py # S7 driver (future)
β β βββ modbus.py # Modbus driver (future)
β βββ tools/
β β βββ __init__.py
β β βββ tags.py # Tag read/write tools
β β βββ alarms.py # Alarm tools
β β βββ diagnostics.py # Status/diagnostic tools
β βββ resources/
β β βββ __init__.py
β β βββ tag_database.py # Tag list resource
β βββ safety/
β βββ __init__.py
β βββ whitelist.py # Write permission control
β βββ audit.py # Audit logging
βββ config.example.yaml
βββ requirements.txt
βββ pyproject.toml
βββ tests/
βββ ...Safety
This server controls industrial equipment. Safety is paramount.
Read-only mode by default (
allow_writes: false)Tag whitelist for write operations
All operations logged to audit trail
Confirmation required for writes (via MCP confirmation flow)
License
MIT
Available Tools
9 toolsacknowledge_alarmC
Acknowledge an active alarm.
Inputs: alarm_id (required).
get_alarmsB
Get active alarms from the PLC.
Inputs: include_acknowledged.
get_connection_infoC
Get connection information and statistics.
Inputs: no named parameters.
get_io_statusC
Get I/O module status and health.
Inputs: module.
get_plc_statusA
Get PLC status including CPU state, mode, and faults.
Inputs: no named parameters.
list_tagsB
List all available tags in the PLC. Can filter by pattern.
Inputs: pattern.
read_tagA
Read a PLC tag value. Returns the current value of the specified tag.
Inputs: tag_name (required).
read_tagsA
Read multiple PLC tags at once. More efficient than multiple single reads.
Inputs: tag_names (required).
write_tagA
Write a value to a PLC tag. Requires write permissions and tag must be in whitelist.
Inputs: value (required), tag_name (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelogβ¦
TDQS
Scored across 9 tools
Each tool targets a distinct action: reading/writing tags, listing tags, managing alarms, or retrieving status info. No overlap in purpose.
All tools follow a consistent verb_noun pattern using snake_case (e.g., read_tag, write_tag, acknowledge_alarm).
9 tools cover the essential PLC operations without unnecessary bloat; the count is well-scoped for the domain.
Core operations (read/write tags, list tags, alarms, status) are present; missing a bulk write or subscription feature, but these are minor gaps.
Maintenance
Related MCP Connectors
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Query Allen-Bradley and Siemens PLC projects, live tag values, and analyses in plain English.
Cloud-hosted MCP server for secure AI access to enterprise data sources via CData Connect AI.
Hosted MCP server connecting AI assistants to 9,000+ apps and 40,000+ actions via Zapier.
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceMCP server that connects WAGO PLCs to LLM agents via the WDx/WDA REST API, enabling AI assistants to read sensor values, change configuration, trigger firmware updates, or monitor entire PLC fleets without custom code.233 PyPI4-
- AlicenseCqualityCmaintenanceMCP server for Inductive Automation Ignition, enabling AI assistants to browse and write tags, query history and alarms, manage projects, and deploy Perspective views through natural language.4337 PyPI1MIT
- AlicenseBqualityCmaintenanceUniversal MCP server for industrial PLC communication, enabling AI agents to read sensors, alarms, status, setpoints, and write setpoints via adapters for Modbus, S7, or custom PLCs.6MIT
- AlicenseNot gradedqualityDmaintenanceThe first and only MCP server for PLC (Programmable Logic Controller) intelligence. Give any AI agent direct access to industrial automation data β ladder logic, tag databases, cross-references, fault root cause analysis, and sequence blockersMIT