PLC Agentics
Provides tools for Mitsubishi MELSEC PLC programming, including brand configuration for GX Works 3, supported languages (LD, ST, FBD, SFC), and code templates for automation patterns.
Provides tools for Schneider Electric PLC programming, including brand configuration for EcoStruxure Control Expert, supported languages (ST, LD, FBD, SFC, IL), and code templates for automation patterns.
Provides tools for Siemens S7 PLC programming, including brand configuration for TIA Portal V17+, supported languages (SCL, LAD, FBD, STL, GRAPH), and code templates for automation patterns.
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 AgenticsWrite a motor start/stop with fault latch in SCL for a Siemens S7-1500"
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 Agentics
An MCP server that gives any AI expert-level knowledge of PLC programming (IEC 61131-3).
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
Claude Desktop (recommended)
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 --helpHTTP mode (ChatGPT / Gemini / DeepSeek)
HTTP_PORT=3000 node src/cli.js serveEndpoints: GET /openapi.json, GET /tools, POST /tool/<name>.
Available MCP tools
Tool | Description |
| Lists the supported PLC brands |
| Returns IDE, languages, naming and export conventions for a brand |
| Returns a code template for an automation pattern in a chosen language |
| Lists all available code templates |
| Returns IEC 61131-3 language and topic reference |
Code templates
motor_control: start/stop/fault with manual/auto modepid_loop: closed-loop PID with output scalingconveyor_sequence: multi-zone sequencer with jam detectionsafety_estop: dual-channel E-stop monitoring and restartalarm_management: priority, acknowledge, reset and historybatch_recipe: ISA-88 inspired step sequencermodbus_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 toolsget_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.
| Name | Required | Description | Default |
|---|---|---|---|
| brand | Yes | PLC brand slug. One of: siemens_s7, allen_bradley, codesys, schneider, mitsubishi, omron, beckhoff |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| pattern | Yes | Automation pattern slug | |
| language | No | IEC 61131-3 language | ST |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | No | Optional: specific topic within the language | all |
| language | Yes | IEC 61131-3 language |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
5 tool updates
v2.0.0- First observed
get_brand_config - First observed
get_code_template - First observed
get_iec61131_reference - First observed
list_brands - First observed
list_templates
TDQS
Scored across 5 tools
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.
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.
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.
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
Related MCP Connectors
- mcp-serverOAuthcom.make
Give your AI agents the tools to build, manage, and run automation workflows.
- mcpOAuthcom.keboola
Connect your AI assistants to Keboola and expose your data, transformations, SQL queries, ...
- alloyOAuthai.usealloy
Connect Claude, Cursor, Codex, and other AI tools to your robotics mission data.
Real SEO data for AI assistants: page audits, Keyword Planner volumes, Search Console history.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with B\&R Automation Studio projects by building code, running ARsim simulators, and reading or writing OPC UA variables. It facilitates industrial automation development and real-time variable integration through natural language commands.14MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI-powered PLC programming with natural language to ladder logic conversion, L5X and .ACD project generation, and semantic search through L5X files and documentation.36-
- FlicenseNot gradedqualityCmaintenanceConverts natural language specifications into working ladder logic and complete Studio 5000 projects, enabling AI-powered PLC programming with L5X and .ACD file generation, semantic search, and documentation access.-
- AlicenseBqualityBmaintenanceEnables AI agents to discover, inspect, edit, rebuild, and save Schneider Electric RemoteConnect and SCADAPack x70 IEC logic projects, including program sections, hardware, variables, and Modbus configuration.63MIT