plc-mcp-server
by OlubunmiAde
README.md
# 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
## Quick Start
```bash
# 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 8080
```
## Claude Desktop Configuration
Add to `claude_desktop_config.json`:
```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
TDQS
A3.6/5.0
Scored across 9 tools
Disambiguation5/5
Each tool targets a distinct action: reading/writing tags, listing tags, managing alarms, or retrieving status info. No overlap in purpose.
Naming Consistency5/5
All tools follow a consistent verb_noun pattern using snake_case (e.g., read_tag, write_tag, acknowledge_alarm).
Tool Count5/5
9 tools cover the essential PLC operations without unnecessary bloat; the count is well-scoped for the domain.
Completeness4/5
Core operations (read/write tags, list tags, alarms, status) are present; missing a bulk write or subscription feature, but these are minor gaps.
Maintenance
ActivityInactive
ResponsivenessUnresponsive