ignition-mcp-server
ignition-mcp-server
Ignition SCADA를 위한 최초의 AI 기반 개발 도구 — 모든 AI 에이전트가 Ignition 프로젝트와 게이트웨이를 읽고, 이해하고, 상호작용할 수 있게 해주는 MCP 서버입니다.
[!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 도구는 전무합니다 — 공급업체 코파일럿도, 타사 도구도, 학술 연구도 없습니다. 다른 주요 자동화 플랫폼(Siemens, Rockwell, Schneider)에는 AI 어시스턴트가 있습니다. Ignition에는 아무것도 없습니다.
이 서버가 그 공백을 메웁니다. 오픈소스이고, 에이전트에 구애받지 않으며, 오프라인으로 작동합니다.
Nodeblue가 구축하고 유지 관리합니다. 이 커넥터들은 Nexus 작업에서 나온 초기 커뮤니티 도구로, 이 기능은 크로스 공급업체 상관관계, 실시간 고장 진단, 운영에 대한 지속적인 메모리와 함께 프로덕션 등급으로 제공됩니다.
설치
pip install ignition-mcp-serverPython 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 8080SSE URL http://<host>:8080/sse를 사용하여 모든 MCP 클라이언트에서 연결하세요.
사용 가능한 도구
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")유형(지연, 알림), 알림 프로필 이름, 연락처 정보, 통합 기간, 전환 수와 함께 파이프라인 단계를 반환합니다.
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+) |
|
프로젝트 내보내기 ( | Ignition Gateway 또는 Designer에서 내보낸 |
8.3 파일 시스템 | Gateway의 |
예시 대화
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 버전 형식 지원
실제 프로젝트 내보내기에서 발견된 버그 수정 및 엣지 케이스 — 이슈 환영
이 커넥터는 해당 범위에서 기능이 완성되었습니다: 단일 프로젝트 이해와 게이트웨이 연결. 이 범위를 넘어선 개발은 Nexus에서 진행됩니다.
이 커넥터와 Nexus 비교
커넥터는 액세스 계층입니다. Nexus는 그 위에 — 그리고 다른 모든 커넥터 위에 — 하나의 시스템으로 자리하는 인텔리전스입니다.
기능 | 이 커넥터 | Nexus |
Ignition 프로젝트 파싱 (태그, 뷰, 스크립트, UDTs, 알람, 쿼리) | ✅ | ✅ |
라이브 게이트웨이 읽기 / 이력 | ✅ | ✅ |
라이브 쓰기 | ⚠️ 옵트인 플래그, 미감사 | ✅ 게이트 처리, 감사됨, 인간 승인 |
크로스 벤더: 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