Skip to main content
Glama
OlubunmiAde

plc-mcp-server

by OlubunmiAde

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 8080

Claude 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 tools
acknowledge_alarmC

Acknowledge an active alarm.

ParametersJSON Schema
NameRequiredDescriptionDefault
alarm_idYesID of the alarm to acknowledge

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description must fully disclose behavior. It only says 'Acknowledge an active alarm' without explaining side effects (e.g., state change, notification triggers, reversibility, or error cases).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely short, but it lacks essential detail. Conciseness is not beneficial if it sacrifices clarity and completeness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity (one parameter, no output schema), the description should still explain the outcome of acknowledgment and any assumptions. It fails to do so, leaving the agent underinformed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the parameter 'alarm_id' is clearly described in the schema. The description adds no additional meaning beyond what the schema provides, so baseline score is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('acknowledge') and the resource ('an active alarm'). It distinguishes from sibling tools like 'get_alarms' which reads alarms, but does not elaborate on the exact meaning of acknowledgment.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives, no prerequisites (e.g., alarm must be active), and no exclusions or context provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_alarmsB

Get active alarms from the PLC.

ParametersJSON Schema
NameRequiredDescriptionDefault
include_acknowledgedNoInclude already acknowledged alarms

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden. It says 'active alarms' but does not define 'active' (default excludes acknowledged ones). Basic transparency but lacks detail on behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence. It is appropriately sized for a simple tool, though no structured formatting is used.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema is provided, and the description does not explain what the tool returns (e.g., list of alarm objects, fields). For a tool that reads data, this is a significant gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the description adds no extra meaning beyond the schema's parameter description. Baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states it retrieves active alarms from the PLC, which is a specific verb and resource. It is distinct from sibling tools like acknowledge_alarm (modification) and tag-related tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives like acknowledge_alarm or read_tag. Usage context is only implied by the tool name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_connection_infoC

Get connection information and statistics.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description should disclose behavioral traits. It indicates a read operation ('Get') but does not explicitly state read-only nature, side effects, or permissions. Minimal behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no wasted words. It is concise and front-loaded with the verb and resource, but could be slightly more descriptive.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity (no parameters, no output schema), the description provides a basic understanding but lacks detail on what constitutes 'connection information and statistics.' It is adequate but not comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, and schema description coverage is 100%. The description adds no parameter info, which is acceptable here. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves connection information and statistics. However, it does not differentiate from sibling tools like 'get_alarms' or 'get_plc_status' that also get data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The description lacks any context about appropriate usage scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_io_statusC

Get I/O module status and health.

ParametersJSON Schema
NameRequiredDescriptionDefault
moduleNoSpecific module to check (optional, all if not specified)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, and the description only says 'status and health' without explaining what that entails (e.g., return format, side effects). Lacks details on read-only nature or performance implications.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no fluff. Efficient but could be slightly expanded for clarity without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one optional param and no output schema, the description is minimally sufficient but lacks return format and relation to other tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. Description adds no additional meaning beyond the schema's parameter description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states verb 'Get' and resource 'I/O module status and health', which distinguishes it from siblings like get_plc_status or get_alarms. However, it does not explicitly differentiate itself from other 'get' tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs siblings such as get_plc_status. Does not mention prerequisites or context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_plc_statusA

Get PLC status including CPU state, mode, and faults.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It only states it gets status, which is implied by the name. There is no mention of side effects, permissions, rate limits, or other behaviors beyond the basic read operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no unnecessary words. Front-loaded with 'Get PLC status' which captures the core purpose immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description partially explains return values by listing CPU state, mode, and faults. It does not describe format or structure, but for a simple read tool, this is sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has no parameters, and the schema coverage is 100% (trivially). Per guidelines, baseline for 0 parameters is 4. The description does not add parameter info but none is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses specific verb 'Get' and resource 'PLC status', and lists specific components (CPU state, mode, faults). It clearly distinguishes from sibling tools like get_alarms, get_io_status, and get_connection_info, which cover other aspects.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives. The description does not mention when to prefer it over get_io_status or get_alarms, nor does it provide any conditions or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_tagsB

List all available tags in the PLC. Can filter by pattern.

ParametersJSON Schema
NameRequiredDescriptionDefault
patternNoOptional filter pattern (e.g., 'Motor*', '*_Level')

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavior. It only states listing and filtering, with no mention of side effects (presumably read-only), performance, pagination, or pattern matching semantics (regex vs glob, case sensitivity). This is insufficient for a tool with no annotation safety net.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short, front-loaded sentences. First sentence states the main action, second adds optional filtering. No wasted words, perfectly sized for the tool's simplicity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema or return format is specified. For a list tool, the description should indicate what fields are returned (e.g., tag names, IDs?). Given the simplicity and lack of annotations, more detail is needed to be fully useful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (the pattern parameter has examples in the schema). The description merely repeats that filtering is available, adding no extra meaning beyond the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List all available tags in the PLC', which is a specific verb and resource. It distinguishes from sibling tools like read_tag (which reads a single tag value) or write_tag, making it easy to understand what the tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for discovering tags and optionally filtering, but it does not explicitly state when to use this tool versus siblings (e.g., for reading values use read_tag). No when-not-to-use guidance is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_tagA

Read a PLC tag value. Returns the current value of the specified tag.

ParametersJSON Schema
NameRequiredDescriptionDefault
tag_nameYesName of the tag to read (e.g., 'Motor1_Running', 'Tank_Level')

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must stand alone. It discloses a read operation and return value, but is minimalβ€”no mention of side effects, permissions, or failure modes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two efficient sentences with no wasted words. Information is front-loaded, covering purpose and output immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and no output schema, the description provides sufficient context: what it does (read tag) and what it returns (value).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with parameter description including examples. The tool description adds nothing beyond the schema: 'specified tag' is redundant. Baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool reads a PLC tag value and returns its current value. It uses specific verb and resource, distinguishing it from siblings like 'write_tag' and 'list_tags'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool over alternatives like 'read_tags' for multiple tags. The name implies single-tag use, but no when-not-to-use or alternative mentions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_tagsA

Read multiple PLC tags at once. More efficient than multiple single reads.

ParametersJSON Schema
NameRequiredDescriptionDefault
tag_namesYesList of tag names to read

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must bear full burden. It describes the core read behavior but does not mention non-destructive nature or other traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise, with two front-loaded sentences that convey purpose and benefit without extraneous content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read tool with no output schema, the description is adequate but lacks details on return format, limits, or error behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the description adds little beyond what the schema already conveys about the tag_names parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool reads multiple PLC tags at once, distinguishing it from the sibling single-read tool, read_tag.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly notes efficiency over multiple single reads, providing a reason to use this tool, though it does not explicitly state when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

write_tagA

Write a value to a PLC tag. Requires write permissions and tag must be in whitelist.

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYesValue to write (type depends on tag)
tag_nameYesName of the tag to write

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description carries the burden. It mentions required permissions and whitelist, but does not disclose response format, error handling, or side effects beyond mutation. Adequate but not comprehensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no fluff. The core action is front-loaded. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 2-parameter write tool with no output schema and no annotations, the description covers the action and prerequisites. It could mention that the tag must exist or error handling, but it is sufficiently complete for typical usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: both parameters have descriptions in the schema. The tool description adds no additional parameter semantics beyond what the schema already provides. Baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Write a value to a PLC tag', using a specific verb and resource. It distinguishes itself from sibling tools like read_tag and list_tags.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes prerequisites: 'Requires write permissions and tag must be in whitelist.' It does not explicitly compare to alternatives or state when-not-to-use, but the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 9 tool updatesv1.0.0
    • First observedacknowledge_alarm
    • First observedget_alarms
    • First observedget_connection_info
    • First observedget_io_status
    • First observedget_plc_status
    • First observedlist_tags
    • First observedread_tag
    • First observedread_tags
    • First observedwrite_tag

TDQS

A3.6/5.0
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
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    A
    maintenance
    MCP 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.
    3
    -
  • A
    license
    C
    quality
    C
    maintenance
    MCP 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.
    43
    1
    MIT
  • F
    license
    B
    quality
    B
    maintenance
    Universal 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.
    6
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    The 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 blockers
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/OlubunmiAde/plc-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server