ignition-mcp-server
ignition-mcp-server
首个面向 Ignition SCADA 的 AI 驱动开发工具——一个 MCP 服务器,让任何 AI 代理能够读取、理解并与你的 Ignition 项目和网关交互。
[!NOTE] 这个连接器是来自 Nodeblue 的早期社区工具。 完整系统是我们的工业智能平台 Nexus——这些仓库只是它的连接层。
Nexus 读取并推理你的整个运营:PLC 逻辑、SCADA 系统、实时控制器数据、文档、故障历史,以及 MES/ERP 记录。它跨厂商工作——Rockwell、Siemens、Ignition、CODESYS 系列,以及通过 PLCopen 支持的 500+ 品牌。它能诊断运行中的故障,持有对运营的持久记忆,并用通俗的英语回答,且引用来源。
Nodeblue 开源连接器
连接器 | 功能 |
Rockwell/Allen-Bradley Studio 5000 — 解析 L5X 导出:标签、UDT、例程、AOI、交叉引用 | |
ignition-mcp-server(此仓库) | Ignition SCADA — 视图、脚本、标签、UDT、报警、实时网关读/写 |
将 Ignition SCADA 标签与 Studio 5000 PLC 逻辑进行端到端关联 |
功能简介
ignition-mcp-server 通过 Model Context Protocol 将 AI 代理(Claude、GPT、本地 LLM)连接到你的 Ignition SCADA 项目。它为 AI 提供结构化访问权限:
标签 — 浏览标签层级,按文件夹路径过滤,查看数据类型和值
Perspective 视图 — 读取组件树、绑定、事件处理器和样式
脚本 — 读取项目库脚本和网关事件脚本,包含作用域信息
UDT — 列出并检查用户定义类型(UDT)定义,包含成员详情
报警管道 — 读取报警通知配置,包含阶段、配置文件和转换
命名查询 — 读取 SQL 查询定义,包含参数、目标数据库和类型
实时标签读/写 — 通过 WebDev 读取运行中 Ignition 网关上的标签值;写入为可选项(
--enable-writes)脚本执行 — 在网关作用域内运行 Python 脚本(可选,
--enable-writes)标签历史 — 查询带时间范围过滤的历史标签数据
同时支持 Ignition 8.1+ 项目导出(.zip 文件)和 8.3+ 基于文件系统的项目(直接目录访问)。
Related MCP server: ignition-mcp
为什么存在
Ignition 在全球有 ~300,000+ 套安装,但 AI 工具为零——没有供应商的 copilot,没有第三方工具,没有学术研究。其他所有主流自动化平台(Siemens、Rockwell、Schneider)都有 AI 助手。Ignition 一无所有。
这个服务器填补了这一空白。它是开源的、与代理无关,并且可以离线工作。
由 Nodeblue 构建和维护。这些连接器是我们在 Nexus 工作中出品的早期社区工具,该能力在生产级环境中交付——同时具备跨厂商关联、实时故障诊断和对运营的持久记忆。
安装
pip install ignition-mcp-server需要 Python 3.10+。
如果要从源码安装:
git clone https://github.com/nodeblue-ai/ignition-mcp-server.git
cd ignition-mcp-server
pip install .快速开始
stdio(本地 — kiro-cli、Claude Desktop、Claude Code)
ignition-mcp-serverSSE(远程 — 服务器在一台机器上,代理在另一台机器上)
ignition-mcp-server --transport sse --port 8080使用实时网关连接
ignition-mcp-server --gateway-url https://my-gateway:8088 --gateway-username admin --gateway-password changeme这将启用只读的实时工具:read_tag 和 get_history。需要在网关上安装 WebDev 模块 并配置 API 端点(参见下面的 网关设置)。
[!WARNING] 默认禁用实时写入。
write_tag和execute_script可以更改正在运行的 SCADA 系统上的值,并驱动真实设备。要启用它们,你必须显式使用--enable-writes选择加入:ignition-mcp-server --gateway-url https://my-gateway:8088 --enable-writes仅对非生产网关执行此操作,或者当你完全了解所连接的 AI 代理被允许接触什么时。经过门控、审计和人工批准的实时写入是 Nexus 的一部分。
配置
kiro-cli
添加到你的 ~/.kiro/settings.json:
{
"mcpServers": {
"ignition": {
"command": "ignition-mcp-server",
"args": []
}
}
}使用实时网关访问:
{
"mcpServers": {
"ignition": {
"command": "ignition-mcp-server",
"args": ["--gateway-url", "https://my-gateway:8088"]
}
}
}Claude Desktop
添加到你的 Claude Desktop MCP 配置:
{
"mcpServers": {
"ignition": {
"command": "ignition-mcp-server",
"args": []
}
}
}SSE(远程)
在你的工程工作站上启动服务器:
ignition-mcp-server --transport sse --host 0.0.0.0 --port 8080使用 SSE URL 从任何 MCP 客户端连接:http://<host>:8080/sse
可用工具
ping
健康检查。返回 "pong"。
get_tags(project_path, tag_path?, provider?)
浏览项目中的标签。可按文件夹路径和标签提供程序进行过滤。
get_tags("/path/to/project", "Conveyors/Line1")
get_tags("/path/to/project", "", "edge")返回标签名称、类型、数据类型、值和文档。
list_tag_providers(project_path)
列出项目中所有标签提供程序名称(例如 default、edge、MQTT)。
list_views(project_path)
列出项目中所有 Perspective 视图路径。
get_view(project_path, view_path)
获取 Perspective 视图的组件树,包含绑定和事件。
get_view("/path/to/project", "Overview")返回组件层次结构、属性绑定和事件处理程序数量。
list_scripts(project_path)
列出所有脚本及其作用域(网关、客户端、全部)。
get_script(project_path, script_path)
获取项目脚本的源代码。
get_script("/path/to/project", "ignition/script-python/utils")list_udts(project_path)
列出所有 UDT(用户定义类型)定义名称。
get_udt(project_path, udt_name?)
获取 UDT 定义,包含成员详情、参数和文档。
get_udt("/path/to/project", "Motor_UDT")list_alarms(project_path)
列出项目中所有报警管道名称。
get_alarm(project_path, pipeline_name)
获取报警管道的配置,包括阶段、通知配置文件和转换。
get_alarm("/path/to/project", "MainAlarmPipeline")返回管道阶段,包含类型(delay、notification)、通知配置文件名称、联系人信息、合并周期和转换数量。
list_named_queries(project_path)
列出项目中所有命名查询名称。
get_named_query(project_path, query_name)
获取命名查询的 SQL、参数、数据库连接和类型(Query vs Update)。
get_named_query("/path/to/project", "GetActiveFaults")返回 SQL 文本、含数据类型和默认值的参数定义、目标数据库以及描述。
read_tag(tag_path)
从实时网关读取一个或多个标签的当前值。多个标签用逗号分隔。
read_tag("[default]Conveyors/Line1/Speed")
read_tag("[default]Conveyors/Line1/Speed, [default]Conveyors/Line1/Running")启动时需要 --gateway-url。
write_tag(tag_path, value)
向实时网关上的标签写入值。自动处理布尔/数值类型转换。
write_tag("[default]Conveyors/Line1/Speed", "1800")默认禁用。 启动时需要 --gateway-url 和 --enable-writes。
execute_script(code)
在网关作用域内于 Ignition 网关上执行 Python 脚本。
execute_script("system.tag.readBlocking(['[default]Conveyors/Line1/Speed'])")默认禁用。 启动时需要 --gateway-url 和 --enable-writes。
get_history(tag_path, start, end)
从网关的历史库查询历史标签数据。
get_history("[default]Conveyors/Line1/Speed", "2026-04-12T00:00:00Z", "2026-04-12T12:00:00Z")启动时需要 --gateway-url。
支持的项目格式
格式 | 使用方法 |
项目目录(8.1+ 或 8.3+) | 将 |
项目导出( | 将 |
8.3 文件系统 | 指向网关上的 |
示例对话
You: What tags are under the Conveyors folder?
Agent calls: get_tags("/projects/MyPlant", "Conveyors")
Agent: The Conveyors folder contains 2 items:
- Line1 (Folder) — 3 child tags: Running (Boolean), Speed (Float4), Faulted (Boolean)
- Line2_Motor (UDT Instance) — type: Motor_UDT
You: What does the Motor_UDT look like?
Agent calls: get_udt("/projects/MyPlant", "Motor_UDT")
Agent: Motor_UDT has 3 members:
- Running (Boolean) — Motor running status
- Faulted (Boolean) — Motor fault status
- Speed_RPM (Float4) — Motor speed in RPM
Parameters: MotorName (String)
You: Show me the Overview view
Agent calls: get_view("/projects/MyPlant", "Overview")
Agent: The Overview view has a flex container with 3 children:
1. titleLabel (ia.display.label) — bound to view.params.title
2. speedDisplay (ia.display.led-display) — bound to tag [default]Conveyors/Line1/Speed
3. startButton (ia.input.button) — has 1 onClick event handler网关设置
实时工具(read_tag、write_tag、execute_script、get_history)需要在你的 Ignition 网关上安装 WebDev 模块,并配置以下 REST 端点:
端点 | 方法 | 用途 |
| POST | 读取标签值 |
| POST | 写入标签值 |
| POST | 执行网关脚本 |
| POST | 查询标签历史 |
用于 /api/tags/read 的 WebDev Python 资源示例:
def doPost(request, session):
import json
body = json.loads(request["data"])
paths = body.get("tagPaths", [])
values = system.tag.readBlocking(paths)
return {
"json": [
{"path": str(v.path), "value": v.value, "quality": str(v.quality)}
for v in values
]
}完整的设置说明请参阅 Ignition WebDev 文档。
路线图
v0.2 — 报警与命名查询 ✅
list_alarms/get_alarm— 解析报警管道配置list_named_queries/get_named_query— 解析带参数的 SQL 命名查询
v0.3 — 实时网关交互 ✅
read_tag(tag_path)/write_tag(tag_path, value)— 通过 Ignition WebDev 模块进行实时标签交互execute_script(code)— 在网关上运行脚本get_history(tag_path, start, end)— 查询标签历史
v0.4 — 跨平台智能 ✅
通过 bridge-mcp-server 将 Ignition 标签与 Studio 5000 L5X PLC 逻辑交叉引用
"此报警在标签 X 变为 true 时触发 — 这是驱动 X 的 PLC 逻辑"
在标签摘要中提取 OPC 项路径(
opcItemPath、opcServer)
v0.5 — 写入安全门 ✅
write_tag/execute_script默认禁用 — 通过--enable-writes选择启用在工具描述和 CLI 帮助中添加安全警告
维护
PyPI 发布(
pip install ignition-mcp-server)随着新版本发布,支持新的 Ignition 版本格式
针对真实项目导出的 bug 修复和边界情况 — 欢迎提交 issue
这个连接器在其范围内功能完整:单项目理解加网关连接。超出该范围的开发在 Nexus 中进行。
此连接器与 Nexus
连接器是访问层。Nexus 是位于其之上——以及所有其他连接器之上——的智能层,作为一个统一系统运行。
能力 | 此连接器 | Nexus |
解析 Ignition 项目(tags, views, scripts, UDTs, alarms, queries) | ✅ | ✅ |
实时网关读取 / 历史记录 | ✅ | ✅ |
实时写入 | ⚠️ 选择启用标志,未经审计 | ✅ 受控、已审计、经人工批准 |
跨厂商:Rockwell、Siemens、CODESYS 系列(500+ 品牌)、OPC UA | — | ✅ |
运行中产线的实时故障诊断(根因、引用) | — | ✅ |
知识层:您的手册、SFS/DOO 文档、故障历史 — 可搜索,并与逻辑关联 | — | ✅ |
跨会话的操作持久化记忆 | — | ✅ |
脚本生成、视图脚手架、代码生成 | — | ✅ |
规模化:自动发现、全厂资产清单、监控、报警 | — | ✅ |
本地 LLM / 离线部署 | — | ✅ |
如果您正在评估此连接器在单个网关上的单个项目之外的使用场景,欢迎与我们讨论 Nexus。
开发
git clone https://github.com/nodeblue-ai/ignition-mcp-server.git
cd ignition-mcp-server
pip install -e .
pip install pytest
pytest tests/ -v项目结构
src/ignition_mcp_server/
├── __init__.py
├── __main__.py # CLI entry point (stdio/SSE, gateway config)
├── server.py # FastMCP server with all 17 tool definitions
├── project_source.py # Read from .zip or directory (LRU-cached)
├── gateway_client.py # HTTP client for live Ignition WebDev API
└── parsers/
├── tags.py # Tag hierarchy parser (multi-provider)
├── views.py # Perspective view parser
├── scripts.py # Script discovery and reader
├── udts.py # UDT definition parser
├── alarms.py # Alarm pipeline parser
└── named_queries.py # Named query parser
tests/
├── test_server.py # 59 tests — parsers, project sources, error handling
├── test_gateway.py # 18 tests — live gateway tools + write gating with mock HTTP server
└── fixtures/
├── sample-project/ # Synthetic Ignition project (directory)
└── sample-project.zip贡献
欢迎贡献。这是一个采用 MIT 许可的开源项目。
如果您有可以分享的真实 Ignition 项目导出(或匿名版本),这些对测试边界情况尤其有价值。
许可证
Available Tools
17 toolsexecute_scriptA
Execute a Python script on the Ignition gateway and return the result.
DISABLED by default — requires the server to be started with --gateway-url AND --enable-writes. Scripts run in gateway scope with access to system.* functions and can change gateway state or actuate equipment.
Args: code: Python code to execute on the gateway.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the disabled-by-default gating, the required server flags, the gateway execution scope, availability of system.* functions, and that the call can change state or actuate equipment. It does not state how errors surface or what permissions the caller needs beyond the server flags.
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?
Front-loaded with the core action, followed by a tight safety/prerequisite note and an Args block. Every sentence earns its place, though the Args section partially restates 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?
An output schema exists, so return-value explanation is unnecessary. The definition covers the dangerous-action context and enablement prerequisites well; only error-handling behavior and permission scope are left implicit.
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 0% for the single code parameter, so the description must compensate. Its 'Python code to execute on the gateway' line adds the language and scope the bare string type lacks, which is meaningful, though it gives no guidance on return conventions or globals available to the code.
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 (execute) and resource (a Python script on the Ignition gateway), and the phrase 'return the result' frames the outcome. This clearly separates it from sibling read-only tools like list_scripts and get_script, which only enumerate or fetch scripts rather than run 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?
The description gives a concrete prerequisite (disabled by default, requires --gateway-url and --enable-writes) and warns that scripts mutate gateway state, which tells the agent when this is safe to call. It stops short of naming alternative tools or explicit when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_alarmA
Get an alarm pipeline's configuration including stages, notifications, and transitions.
Args: project_path: Path to Ignition project directory or .zip export. pipeline_name: Alarm pipeline name (from list_alarms output).
| Name | Required | Description | Default |
|---|---|---|---|
| project_path | Yes | ||
| pipeline_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral traits. It does not mention read-only status, side effects, error behavior, or authentication requirements. The description only states the content of the configuration, leaving agents uncertain about safety and 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with the main purpose, and includes parameter documentation in a clean docstring format. Every sentence adds value without redundancy.
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?
Given the tool's simplicity and presence of an output schema (not shown but indicated), the description covers the main return content. It is sufficient for most use cases, though could add details about error handling or prerequisites (e.g., file system access) for completeness.
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?
Input schema has 0% description coverage, but the tool description compensates by explaining both parameters: 'project_path' is a path to directory or .zip, and 'pipeline_name' comes from 'list_alarms' output. This adds meaningful context beyond raw schema, though more format details (e.g., required permissions) could be included.
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 clearly states 'Get an alarm pipeline's configuration including stages, notifications, and transitions.' It uses a specific verb ('Get') and resource ('alarm pipeline's configuration'), and distinctly sets it apart from sibling tools like 'list_alarms' which lists alarms but does not retrieve full configuration.
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?
The description provides implicit usage guidance through parameter descriptions, especially noting that 'pipeline_name' is derived from 'list_alarms output'. This hints at a dependency and when to use this tool after listing. However, no explicit when-not-to-use or alternative tools are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_historyA
Query historical tag data from a live Ignition gateway.
Requires the server to be started with --gateway-url and a historian configured on the gateway.
Args: tag_path: Full tag path (e.g. "[default]Conveyors/Line1/Speed"). start: Start time as ISO 8601 (e.g. "2026-04-12T00:00:00Z"). end: End time as ISO 8601 (e.g. "2026-04-12T12:00:00Z").
| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | ||
| start | Yes | ||
| tag_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description notes necessary setup but does not disclose side effects, rate limits, authentication, or typical error conditions. Limited 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficient paragraphs: first sentence states purpose, second covers prerequisites, then clear parameter list with examples. No superfluous content.
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?
Covers prerequisites and parameter formats well. Output schema exists (not shown), so return value details are delegated. Could briefly note that it returns historical data points, but sufficient.
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 has 0% description coverage; description adds full details for all three parameters: examples for tag_path, ISO 8601 format for start and end. Maximally compensates for schema gap.
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?
Clear verb 'Query' and resource 'historical tag data' directly indicate the tool's function. Distinguishes from siblings like read_tag (current value) and get_tags (tag metadata).
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?
States prerequisites (server started with --gateway-url, historian configured) but does not specify when not to use or contrast with alternative tools like read_tag.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_named_queryA
Get a named query's SQL, parameters, database connection, and type.
Args: project_path: Path to Ignition project directory or .zip export. query_name: Named query name (from list_named_queries output).
| Name | Required | Description | Default |
|---|---|---|---|
| query_name | Yes | ||
| project_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose side effects, permissions, or limitations beyond stating what is retrieved. It doesn't contradict annotations since none exist.
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 plus a clear Args list, front-loaded with the main purpose. No extraneous information.
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?
An output schema exists, so return values are documented. The description covers both parameters adequately and explains the tool's purpose. Slight lack of behavioral details prevents a 5.
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?
With 0% schema description coverage, the description adds meaning for both parameters: project_path (path to project directory or .zip) and query_name (from list_named_queries output). This compensates well for the missing schema descriptions.
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 clearly states 'Get a named query's SQL, parameters, database connection, and type' with a specific verb and resource. It distinguishes from siblings like list_named_queries (which lists names only) and 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage after list_named_queries by referencing its output, but lacks explicit when-to-use, when-not-to-use, or alternative tool guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_scriptA
Get the source code of an Ignition project script.
Args: project_path: Path to Ignition project directory or .zip export. script_path: Script resource path (from list_scripts output).
| Name | Required | Description | Default |
|---|---|---|---|
| script_path | Yes | ||
| project_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden. It states the tool retrieves source code, which implies a read-only operation, but does not disclose error conditions, permission requirements, or any side effects. The behavior is basic and not misleading, but additional details would improve transparency.
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?
The description is extremely concise: two focused sentences for purpose and two brief parameter descriptions. Every sentence adds value, and the main action is front-loaded.
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?
Given the existence of an output schema (which presumably describes the return format), the description does not need to elaborate on return values. It covers the tool's purpose, inputs, and hints at a prerequisite (list_scripts). For a simple retrieval tool, this is nearly complete; a mention of the output being source code would be a minor improvement.
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 schema has 0% description coverage, but the description adds meaningful explanations for both parameters: project_path is described as a path to an Ignition project directory or .zip export, and script_path is described as a script resource path from list_scripts output. This adds value beyond the schema, though examples or format hints would elevate it further.
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 clearly states the action ('Get the source code') and the resource ('an Ignition project script'), and distinguishes it from sibling tools like list_scripts (which lists scripts) and execute_script (which runs them). The verb+resource combination is specific and unambiguous.
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?
The description implies that script_path should come from list_scripts output, but it does not explicitly state when to use this tool versus alternatives, nor does it provide any conditions or prerequisites beyond the parameter descriptions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tagsA
Get tags from an Ignition project, optionally filtered by folder path.
Args: project_path: Path to Ignition project directory or .zip export. tag_path: Optional folder path to filter (e.g. "Conveyors/Line1"). provider: Tag provider name (default: "default"). Use list_tag_providers to discover.
| Name | Required | Description | Default |
|---|---|---|---|
| provider | No | default | |
| tag_path | No | ||
| project_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It implies a read-only operation by describing retrieval, and specifies filtering behavior. It lacks explicit statements about idempotency, error handling, or side effects, but the presence of an output schema mitigates the need for describing return structure.
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?
The description is concise, with two introductory sentences followed by a structured arg list. It is front-loaded with the main purpose, and every sentence adds value without redundancy.
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?
The description covers the essential aspects for a get/retrieve tool with three parameters and an output schema. It references a related tool for provider discovery. It does not cover error scenarios or detailed return structure, but the output schema likely provides that. A small gap is the lack of mention about the return format or pagination if tags are many.
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 0%, so the description must compensate. It does so by explaining the purpose of each parameter, including the optional tag_path filtering and the default provider. It adds context (e.g., 'Use list_tag_providers to discover') that goes beyond the schema. However, the format of tag_path (e.g., path separator) is not detailed.
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 clearly identifies the action ('Get tags') and the resource ('Ignition project'), and distinguishes from sibling tools like list_tag_providers by specifying the target and optional filtering. It explicitly states the verb and resource, leaving no ambiguity.
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?
The description explains the optional filtering and default provider, and directs users to list_tag_providers for discovery. However, it does not explicitly state when to use this tool versus siblings like list_udts or read_tag, nor does it mention prerequisites like ensuring the project exists or handling invalid paths.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_udtB
Get UDT definition(s) with member details.
Args: project_path: Path to Ignition project directory or .zip export. udt_name: Optional UDT name. If empty, returns all UDTs.
| Name | Required | Description | Default |
|---|---|---|---|
| udt_name | No | ||
| project_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It describes the operation as a read (get) and explains optional parameter behavior, but does not disclose permissions, side effects, or rate limits. Adequate but not thorough.
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?
The description is concise, with a one-line summary followed by structured Args. No unnecessary information. Could be slightly more organized (e.g., bullet points), but no waste.
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?
Given the presence of an output schema (not shown), the description need not explain return values. It explains both parameters clearly. For a simple get tool, this is sufficient, though it lacks any cross-referencing or usage notes.
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 0%, but the description adds meaning: project_path is 'Path to Ignition project directory or .zip export' and udt_name is 'Optional UDT name. If empty, returns all UDTs.' This adds significant value beyond the schema's type-only definitions.
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 clearly states 'Get UDT definition(s) with member details,' specifying the action and resource. It distinguishes from list_udts by implying detailed output, but does not explicitly differentiate from siblings.
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?
The description provides parameter behavior (e.g., empty udt_name returns all UDTs), but lacks guidance on when to use this tool versus alternatives like list_udts. No exclusions or context for selection are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_viewA
Get a Perspective view's component tree, bindings, and structure.
Args: project_path: Path to Ignition project directory or .zip export. view_path: View path (e.g. "Overview" or "Screens/MotorDetail").
| Name | Required | Description | Default |
|---|---|---|---|
| view_path | Yes | ||
| project_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It only says 'Get', implying a read operation, but does not explicitly state read-only nature, side effects, permissions, or error conditions like missing view or invalid path.
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?
The description is concise: one line for the main purpose followed by two structured parameter descriptions. No unnecessary text, and all information is front-loaded.
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?
Given the tool has only 2 required parameters and an output schema exists, the description covers the inputs well. However, it lacks information on error behavior or prerequisites (e.g., does the view need to exist?), but these are acceptable gaps for a simple getter.
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?
With 0% schema description coverage, the description compensates by explaining both parameters: 'project_path' as path to Ignition project directory or .zip, and 'view_path' with examples like 'Overview'. This adds significant meaning beyond the raw 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?
The description clearly states the verb 'Get' and the resource 'Perspective view's component tree, bindings, and structure'. It distinguishes from sibling 'list_views' by focusing on details of a specific view, not listing.
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?
The description does not provide explicit guidance on when to use this tool versus alternatives like 'list_views' or 'get_tags'. It only implies usage for retrieving a specific view's internal structure.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_alarmsB
List all alarm pipeline names in an Ignition project.
Args: project_path: Path to Ignition project directory or .zip export.
| Name | Required | Description | Default |
|---|---|---|---|
| project_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It implies read-only listing but does not explicitly state non-destructiveness, permissions, or side effects. Lacks detail on behavior beyond listing.
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, no redundancy. Purpose is front-loaded, and parameter information is clearly structured. No wasted words.
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?
Tool has an output schema (not shown), so return values need not be described. However, missing behavioral aspects like error handling, project format constraints, and any assumptions (e.g., existence of alarms). Adequate but not thorough.
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 description adds meaning to the single parameter 'project_path' (Path to Ignition project directory or .zip export) beyond the schema's bare type string. With 0% schema coverage, this compensates well.
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 clearly states the tool lists all alarm pipeline names in an Ignition project, using specific verb 'list' and resource 'alarm pipeline names'. It is distinct from siblings like get_alarm (singular) and list scripts/queries, but does not explicitly differentiate.
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?
No guidance on when to use this tool versus alternatives such as get_alarm for details. No context on prerequisites or 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.
list_named_queriesA
List all named query names in an Ignition project.
Args: project_path: Path to Ignition project directory or .zip export.
| Name | Required | Description | Default |
|---|---|---|---|
| project_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description should disclose safety aspects (read-only) and output structure, but it only mentions listing names. No information about side effects, permissions, or response format beyond the implied list of strings.
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?
The description is concise with two short sentences, immediately stating the action and listing the argument. Every word is necessary.
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?
While the tool is simple and has an output schema, the description lacks usage guidelines and behavioral transparency, making it incomplete for an agent to fully understand when and how to use it.
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 description adds meaningful context to the single parameter 'project_path', specifying it can be a project directory or .zip export, which is not evident from the schema alone. Schema coverage is 0%, so this is beneficial.
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 clearly states the verb 'List' and the resource 'named query names' within a given 'Ignition project', making the tool's purpose specific and distinguishable from siblings like 'get_named_query'.
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?
No guidance is provided on when to use this tool versus alternatives, such as 'get_named_query' for full details. The description lacks context for effective decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_scriptsA
List all scripts in an Ignition project with their scope.
Args: project_path: Path to Ignition project directory or .zip export.
| Name | Required | Description | Default |
|---|---|---|---|
| project_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only says 'list all scripts... with their scope,' but does not disclose behaviors like reading a directory, required permissions, error handling, or performance implications. This is minimal transparency.
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?
The description is concise: one sentence for the tool's purpose, one for the parameter. It front-loads the action and resource, with no unnecessary words.
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?
Given the simplicity (1 parameter) and presence of an output schema (not shown but indicated), the description is adequate. It specifies that output includes script names and scopes. Could mention more about output structure, but not required due to output schema.
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 0%, but the description adds meaning to the 'project_path' parameter: 'Path to Ignition project directory or .zip export.' This clarifies the expected input format, which is not evident from the bare schema type string.
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 clearly states 'List all scripts in an Ignition project with their scope.' It uses a specific verb ('List') and a specific resource ('scripts'), and it distinguishes itself from siblings like 'get_script' (singular) and 'execute_script' (execution).
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?
The description provides no guidance on when to use this tool versus alternatives like 'get_script' or 'execute_script'. It simply states what it does, leaving the agent to infer usage from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tag_providersA
List all tag provider names in an Ignition project (e.g. 'default', 'edge').
Args: project_path: Path to Ignition project directory or .zip export.
| Name | Required | Description | Default |
|---|---|---|---|
| project_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It only states the action without revealing side effects, required permissions, error behavior, or whether the operation is read-only. This is insufficient for an agent to understand implications.
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?
The description is very concise: two sentences plus an Args section. Every part earns its place, and the key information is front-loaded. No wasted words.
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?
The tool is simple with one parameter, and an output schema exists (though not shown). The description covers the basic purpose and parameter context, but lacks details on return format, error handling, or behavior with invalid paths. It's minimally adequate but not complete.
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 0%; the description adds meaning by specifying that project_path is a path to an Ignition project directory or .zip export, which is not in the schema. This is essential for parameter understanding.
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 clearly states the tool lists tag provider names in an Ignition project, with examples like 'default' and 'edge'. The verb 'list' and resource 'tag provider names' are specific and distinguish it from siblings that list other entities.
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?
The description implies usage for retrieving tag provider names but lacks explicit guidance on when to use this tool versus alternatives, or any prerequisites or exclusions. The sibling tools are different, so the purpose is clear, but no when-not context is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_udtsB
List all UDT (User Defined Type) names in an Ignition project.
Args: project_path: Path to Ignition project directory or .zip export.
| Name | Required | Description | Default |
|---|---|---|---|
| project_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description should disclose behavioral traits. It only mentions listing names without addressing permissions, side effects, or whether it is read-only.
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 concise sentences, front-loaded with the tool's purpose, then parameter explanation. No wasted words.
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?
Adequate for a simple list tool with an output schema. Could mention that it returns only names and not full UDT definitions, but sufficient for basic understanding.
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?
Despite 0% schema description coverage, the description explains the sole parameter 'project_path' with a clear concept ('Path to Ignition project directory or .zip export'). Adds value 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?
The description clearly states the action ('List all UDT names') and the resource ('User Defined Type'). It distinguishes from sibling 'get_udt' implicitly, but could be more explicit that this returns only names.
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?
No guidance on when to use this tool versus alternatives like get_udt or list_views. Lacks explicit context for optimal usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_viewsA
List all Perspective view paths in an Ignition project.
Args: project_path: Path to Ignition project directory or .zip export.
| Name | Required | Description | Default |
|---|---|---|---|
| project_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of transparency. It states the tool lists paths, which is inherently non-destructive, but does not explicitly mention read-only behavior, authorization needs, or error handling. An output schema exists but the description adds 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: the first states the purpose, the second describes the parameter. No extraneous words, front-loaded with key verb and noun.
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 listing tool with one parameter, the description covers the primary function. However, it lacks details on return value format (though output schema exists) and error behavior. It is adequate but not fully complete.
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 input schema has one parameter 'project_path' with type string. The description adds meaning by specifying it as 'Path to Ignition project directory or .zip export', which goes beyond the schema's type-only definition. Schema description coverage is 0%, so the description compensates well.
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 clearly states 'List all Perspective view paths in an Ignition project', specifying the verb 'list', the resource 'Perspective view paths', and the context 'Ignition project'. This distinguishes it from siblings like 'get_view' which retrieves a specific view.
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?
The description implies usage when needing to list view paths but does not explicitly state when to use this tool versus alternatives like 'get_view'. No guidance on exclusion or prerequisites is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pingA
Health check — verify the server is running.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. 'Health check — verify the server is running' communicates that this is a non-mutating status probe. It doesn't detail response contents, but the output schema covers that.
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?
The description is exceptionally lean—five words of substance—and every word adds meaning. The 'Health check' label is front-loaded and the explanatory clause follows directly.
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 parameterless status probe with an output schema, this description is complete. It states the tool's purpose and implied read-only nature; nothing else is required to call it correctly.
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 has zero parameters, so parameter documentation is not needed. The baseline of 4 applies because there is no semantic gap for the description to fill.
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 uses a specific verb, 'verify,' and a clear resource, 'the server is running.' It also establishes the tool as a health check, which sets it apart from sibling tools like correlate_projects and trace_tag.
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?
The description clearly implies when to call it: any time the agent needs to confirm the server is up. It doesn't contrast against alternatives, but none of the sibling tools are plausible substitutes for a health check, so no exclusion is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_tagA
Read the current value of one or more tags from a live Ignition gateway.
Requires the server to be started with --gateway-url pointing to an Ignition gateway with the WebDev module installed.
Args: tag_path: Tag path(s), comma-separated for multiple (e.g. "[default]Conveyors/Line1/Speed").
| Name | Required | Description | Default |
|---|---|---|---|
| tag_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It implies read-only via the verb 'read' but does not disclose behavioral traits such as error handling (e.g., if tag not found), authentication requirements, rate limits, or side effects. The description is minimal in covering expected behaviors beyond the basic 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?
The description is concise: two sentences plus the parameter description. Every sentence serves a purpose (purpose, prerequisite, arg details). No wasteful words.
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?
Given the presence of an output schema (which likely describes return values), the description does not need to detail outputs. It covers the input and prerequisite adequately. However, it could briefly mention what the tool returns (e.g., current value), but that is reasonable to leave to the output schema.
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 coverage is 0%, so description must compensate. It explains the one parameter 'tag_path' clearly: it is a string, can include multiple tags comma-separated, and provides an example format. This adds significant value beyond the schema's type definition.
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 clearly states the action ('Read the current value') and the resource ('tags from a live Ignition gateway'). The verb 'read' is specific, and the resource 'tags' distinguishes it from sibling tools like write_tag (write), get_alarm (alarms), and get_history (history).
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?
The description provides a necessary prerequisite (server started with --gateway-url and WebDev module). However, it does not explicitly guide when to use this tool versus alternatives (e.g., get_tags, write_tag). The sibling list exists but the description itself lacks explicit usage context or exclusions.
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 tag on a live Ignition gateway.
DISABLED by default — requires the server to be started with --gateway-url AND --enable-writes. Writing to a live gateway can actuate real equipment. The value is sent as-is; the gateway handles type coercion.
Args: tag_path: Full tag path (e.g. "[default]Conveyors/Line1/Speed"). value: Value to write (string representation — gateway coerces to tag data type).
| Name | Required | Description | Default |
|---|---|---|---|
| value | Yes | ||
| tag_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it warns that writes can actuate real equipment, discloses the default-disabled state, and explains that the value is sent as-is with the gateway performing type coercion. It omits return/confirmation behavior, but an output schema exists to cover that.
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?
The safety warning is front-loaded, followed by the enablement condition, then the parameter notes. Every sentence adds information and there is no 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 two-parameter mutation tool with an output schema, the description covers the risky behaviors (live actuation, disabled by default), the value coercion semantics, and the path format. Nothing an agent needs to invoke it safely 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 coverage is 0%, so the description must compensate, and it does: tag_path is documented with a concrete example ('[default]Conveyors/Line1/Speed') and value is explained as a string representation the gateway coerces to the tag's data type. Both parameters gain meaning beyond the bare string types in 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 and resource ('Write a value to a tag on a live Ignition gateway') and scopes it to a live gateway, which cleanly distinguishes it from the read_tag sibling. An agent can identify the operation without opening the schema.
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?
Gives a clear precondition for use: the tool is DISABLED by default and requires --gateway-url and --enable-writes, so the agent knows when the call will fail. It does not explicitly route to alternatives (e.g., read_tag for inspection), but the gating condition is strong, actionable guidance.
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.
17 tool updates
v0.4.0- First observed
execute_script - First observed
get_alarm - First observed
get_history - First observed
get_named_query - First observed
get_script - First observed
get_tags - First observed
get_udt - First observed
get_view - First observed
list_alarms - First observed
list_named_queries - First observed
list_scripts - First observed
list_tag_providers - First observed
list_udts - First observed
list_views - First observed
ping - First observed
read_tag - First observed
write_tag
TDQS
Scored across 17 tools
Most tools target distinct resources (alarms, views, scripts, UDTs, queries, tags) and separate project inspection from live gateway operations. There is minor potential overlap between get_tags and read_tag, and get_udt can return all UDTs when no name is given, but descriptions generally clarify the boundaries.
Tool names consistently use snake_case with predictable verb_noun forms such as list_alarms, get_view, list_named_queries, read_tag, and write_tag. The only non-resource verb is ping, which is a standard health-check name and does not break the overall pattern.
With 17 tools, the server is slightly above the ideal 3–15 range, but the breadth is justified by covering several distinct Ignition resource families plus live gateway operations. Each tool has a clear role, so the count feels reasonable rather than bloated.
The set provides strong read/list coverage for alarms, tags, views, scripts, UDTs, and named queries, plus live read/write/script/history operations. However, there are no create, update, or delete tools for project resources, which leaves notable lifecycle gaps for an Ignition management surface.
Maintenance
Related MCP Connectors
Zero-setup MCP gateway securely connecting AI to your tools with authentication and workflows
- ZapierOAuthcom.zapier
Hosted MCP server connecting AI assistants to 9,000+ apps and 40,000+ actions via Zapier.
Let AI agents query data and act across all your business apps via MCP.
One connector for 15,000+ MCP servers plus your team's private MCPs, from any AI client.
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceMCP server that connects AI assistants to Siemens TIA Portal via the Openness API. AI-assisted PLC programming, project management, hardware configuration, cross-reference analysis, and deployment. 19 tools, 230 actions.42-
- AlicenseCqualityDmaintenanceMCP 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.4353 PyPI1MIT
- FlicenseBqualityCmaintenanceUniversal 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-
- AlicenseNot gradedqualityCmaintenanceThe 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