Skip to main content
Glama

PLC Agentics

An MCP server that gives any AI expert-level knowledge of PLC programming (IEC 61131-3).

license node

What it does

PLC Agentics is a Model Context Protocol server. It gives AI assistants such as Claude Desktop, ChatGPT or Gemini structured knowledge about PLC brands, IEC 61131-3 languages and proven code templates.

Describe what you need in plain language ("a motor start/stop with fault latch for a Siemens S7-1500") and the model uses these tools to generate code that matches the target IDE, language and conventions.

It runs over stdio for MCP clients. An optional HTTP mode exposes the same tools as a REST API for assistants without MCP support.

Related MCP server: Studio5000 AI-Powered PLC Programming Assistant MCP Server

Supported brands

Brand

IDE

Languages

Siemens S7

TIA Portal V17+

SCL, LAD, FBD, STL, GRAPH

Allen-Bradley / Rockwell

Studio 5000 Logix Designer

LD, ST, FBD, SFC

CODESYS 3.5

CODESYS Development System

ST, LD, FBD, SFC, IL, CFC

Schneider Electric

EcoStruxure Control Expert

ST, LD, FBD, SFC, IL

Mitsubishi MELSEC

GX Works 3

LD, ST, FBD, SFC

Omron NJ/NX

Sysmac Studio

ST, LD, FBD, SFC

Beckhoff TwinCAT 3

TwinCAT 3 XAE

ST, LD, FBD, SFC, IL, CFC

Installation

Add this to your Claude Desktop config (~/.config/Claude/claude_desktop_config.json on Linux):

{
  "mcpServers": {
    "plc-agentics": {
      "command": "npx",
      "args": ["-y", "plc-agentics"]
    }
  }
}

From source

git clone https://github.com/lucasavilanoriega-ux/plc-agentics.git
cd plc-agentics
npm install
node src/cli.js --help

HTTP mode (ChatGPT / Gemini / DeepSeek)

HTTP_PORT=3000 node src/cli.js serve

Endpoints: GET /openapi.json, GET /tools, POST /tool/<name>.

Available MCP tools

Tool

Description

list_brands

Lists the supported PLC brands

get_brand_config

Returns IDE, languages, naming and export conventions for a brand

get_code_template

Returns a code template for an automation pattern in a chosen language

list_templates

Lists all available code templates

get_iec61131_reference

Returns IEC 61131-3 language and topic reference

Code templates

  • motor_control: start/stop/fault with manual/auto mode

  • pid_loop: closed-loop PID with output scaling

  • conveyor_sequence: multi-zone sequencer with jam detection

  • safety_estop: dual-channel E-stop monitoring and restart

  • alarm_management: priority, acknowledge, reset and history

  • batch_recipe: ISA-88 inspired step sequencer

  • modbus_read: cyclic Modbus TCP holding-register read

Run list_templates for the full, current list.

Usage examples

  • "Write a motor control block in SCL for a Siemens S7-1500 with fault latch."

  • "Give me a PID loop in Structured Text for CODESYS with anti-windup."

  • "Create an alarm manager for Allen-Bradley with acknowledge and history."

  • "Build a 3-zone conveyor sequence for Beckhoff TwinCAT."

Generated code must be reviewed and tested by a qualified engineer before it runs on real equipment. This applies especially to safety functions.

Deploying the landing page

The landing page is a static index.html and deploys to Vercel with no build step. See vercel.json for headers and caching.

Contributing

See CONTRIBUTING.md. Fork, branch, open a PR.

License

MIT

Available Tools

5 tools
get_brand_configA

Returns brand-specific configuration for a PLC: memory areas, data types, naming conventions, ST syntax quirks, supported IEC 61131-3 languages, and project structure. Always call this before generating code for a specific brand.

ParametersJSON Schema
NameRequiredDescriptionDefault
brandYesPLC brand slug. One of: siemens_s7, allen_bradley, codesys, schneider, mitsubishi, omron, beckhoff

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It describes what is returned (read-style lookup content) but does not state read-only semantics, auth requirements, cost, or caching behavior. For a simple configuration lookup the enumeration of return content covers most of what an agent needs.

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 sentences, zero filler. The return-content list comes first and the usage directive is front-loaded second, so the agent gets both the what and the when in the most useful order.

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?

No output schema exists, and the description compensates by enumerating the return contents, which is appropriate for a lookup tool. Minor gap: no disclosure of whether configuration is static or version-dependent, but nothing essential for correct invocation is missing.

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% and the single enum parameter is fully documented in the schema, so baseline 3 applies. The description adds no additional meaning about the brand slug or its format beyond the schema.

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?

States a specific verb ('Returns') and resource ('brand-specific configuration for a PLC') and enumerates the content categories (memory areas, data types, naming conventions, ST syntax, IEC 61131-3 languages, project structure). This is clearly distinct from sibling reference/template tools like get_iec61131_reference and get_code_template.

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?

Explicitly states when to use it: 'Always call this before generating code for a specific brand.' That is a strong, actionable directive. It does not name alternatives or when-not-to-use conditions, which keeps it short of a 5.

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

get_code_templateA

Returns a ready-to-adapt IEC 61131-3 code template for a common automation pattern. Use this as the structural starting point, then fill in the user-specific logic.

ParametersJSON Schema
NameRequiredDescriptionDefault
patternYesAutomation pattern slug
languageNoIEC 61131-3 languageST

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are supplied, so the description carries the full disclosure burden. It does usefully warn that the returned template is not final code ("fill in the user-specific logic"), but it says nothing about the return form (code block vs. file), permissions, or whether the patterns are exhaustive. Adequate but not rich for an unannotated tool.

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 sentences with zero filler: the first states what is returned and the domain, the second states how to use it. The purpose is front-loaded and nothing is repeated from the schema.

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 two-parameter enum-only retrieval tool with no output schema, the description covers purpose and usage well. The only minor gap is that it never characterizes the response payload beyond 'code template,' which for template retrieval is a small omission.

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% with both parameters enum-constrained, so the schema already documents valid values fully. The description adds no parameter-level meaning (no mention of 'pattern' or 'language'), which is the expected baseline 3 when the schema does the heavy lifting.

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 gives a specific verb and resource ("Returns ... IEC 61131-3 code template") plus the qualifier "ready-to-adapt" and the domain "common automation pattern." It is clear enough to distinguish Get from its list-style siblings (list_templates, list_brands), though it never names a sibling explicitly, which keeps it short of a 5.

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?

"Use this as the structural starting point, then fill in the user-specific logic" tells the agent the intended workflow, but there is no when-not guidance and no explicit routing against get_iec61131_reference or list_templates. Usage is implied rather than contrasted with alternatives.

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

get_iec61131_referenceA

Returns IEC 61131-3 language reference: keywords, standard function blocks, data types, and syntax rules for the requested language. Use this to ensure generated code is spec-compliant.

ParametersJSON Schema
NameRequiredDescriptionDefault
topicNoOptional: specific topic within the languageall
languageYesIEC 61131-3 language

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are supplied, so the description carries the full disclosure burden. It implies a read-only lookup and enumerates the content categories returned, but says nothing about output size/format, whether results are static reference data or dynamically generated, or any auth/pagination behavior. Adequate but with gaps for a no-annotation tool.

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 sentences, both earning their place: the first defines the return payload, the second gives the use case. Front-loaded with zero filler.

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 two-parameter reference lookup with full schema coverage, the description is nearly sufficient. Without an output schema it could say more about the shape of the returned reference, but the single missing detail is minor.

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% and both parameters are enum-constrained and documented in the schema, so the baseline is 3. The description references "the requested language" and its content list loosely maps to the topic enum values, but it adds no syntax or semantics beyond the schema.

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?

States a specific verb (Returns) and resource (IEC 61131-3 language reference), then enumerates the exact content: keywords, standard function blocks, data types, and syntax rules. It is clearly not a brand/template tool like its siblings, though it never explicitly contrasts itself with them.

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?

"Use this to ensure generated code is spec-compliant" gives a clear triggering context for the tool. It stops short of naming alternatives or when-not-to-use conditions, but the intended purpose is unambiguous.

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

list_brandsA

Returns all PLC brands and IDEs supported by PLC Agentics, with their common programming languages.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden, but for a zero-parameter list tool the burden is small. "Returns" implies a non-mutating read, and it discloses the shape of the payload (brands, IDEs, languages), though it says nothing about ordering, completeness guarantees, or whether results are static or dynamically discovered.

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?

A single front-loaded sentence that states the resource and the returned fields with zero padding or repetition of the tool name.

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?

With no input schema, no annotations, and no output schema, the description must carry the return-value explanation, and it does by naming brands, IDEs, and their programming languages. It stops short of routing the agent to the natural follow-up (get_brand_config), which is the only real gap for a tool this simple.

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 takes no parameters, so there are no parameter semantics to explain; the baseline of 4 applies. The description correctly does not invent parameter detail.

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?

States a specific verb and resource ("Returns all PLC brands and IDEs") and even names the payload fields (common programming languages), so an agent knows exactly what this yields. It does not, however, distinguish itself from the sibling get_brand_config, which an agent could reasonably confuse with a brand-listing call.

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?

There is no when-to-use guidance, no mention of when to prefer this over get_brand_config, and no stated prerequisites or exclusions. The agent must infer that this is the discovery/enumeration entry point from the name alone.

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

list_templatesA

Lists all available code templates with a short description of each.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It does disclose return content ('a short description of each'), which is useful given there is no output schema, but it says nothing about pagination, ordering, or completeness guarantees for a zero-param list 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?

A single front-loaded sentence with no filler; the verb and resource come first and the return content is appended compactly.

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 zero-parameter, no-output-schema listing tool, the definition is nearly complete: it says what is returned and roughly in what form. The one missing piece is guidance on following up with get_code_template to retrieve full template details.

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 takes zero parameters, so there is no parameter semantics to document — the baseline of 4 applies. The description correctly implies no filtering arguments are accepted.

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?

States a specific verb and resource ('Lists all available code templates') and adds the scope ('all') plus what each entry contains. It implicitly contrasts with the singular sibling get_code_template, though it never names that alternative explicitly.

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?

Usage is only implied: an agent can infer this is the enumeration entry point, but there is no explicit 'use this when you need to discover templates, then call get_code_template for full content' routing despite a closely related sibling.

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.

  1. 5 tool updatesv2.0.0
    • First observedget_brand_config
    • First observedget_code_template
    • First observedget_iec61131_reference
    • First observedlist_brands
    • First observedlist_templates

TDQS

A4/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a clearly distinct purpose within the PLC knowledge lookup domain: listing brands vs. getting brand config, listing templates vs. retrieving a template, and fetching IEC 61131-3 reference. The descriptions explicitly clarify when to use each, so an agent should not confuse them.

Naming Consistency5/5

All names follow a consistent snake_case verb_noun pattern: list_brands, list_templates, get_brand_config, get_code_template, get_iec61131_reference. The convention is predictable throughout the set.

Tool Count5/5

Five tools is well-scoped for a reference/lookup server focused on PLC brands, templates, and language references. Each tool earns its place and there is no redundant or trivial tool.

Completeness4/5

The surface covers the core lookup lifecycle: discover brands, retrieve brand configuration, list and retrieve code templates, and access IEC 61131-3 syntax rules. Minor gaps remain, such as a dedicated validation tool or template search by pattern, but agents can work around these using existing tools.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers