MCP server for scoped OPC UA read access and operator-approved semantic controls.
Server has 8 tools with explicit schemas and descriptions. Naming follows verb_noun convention (list_, prepare_, commit_, write_, browse_, inspect_, read_). Descriptions are present but brief (avg ~80 chars). Schemas use Zod validation with type constraints. Critical gaps: parameter descriptions are minimal or missing context; output schemas are not documented; error handling lacks recovery guidance; no pagination support for browse_node despite potentially large result sets.
Browse qualified OPC UA references from a NodeId or Read Entry Point label.
Commit a prepared medium-risk Semantic Control Operation by token.
Inspect qualified identity and fixed OPC UA metadata for one Node.
Inspect qualified identity and fixed OPC UA metadata for Nodes.
List Operator-defined Semantic Controls and their current availability.
Prepare a medium-risk Semantic Control Operation and return a confirmation token.
Read one OPC UA Node by NodeId or Read Entry Point label.
Output schemas not documented. Tools return structured data but LLMs cannot see what fields to expect, forcing them to guess downstream field names and risk broken tool chains.
browse_node accepts continuation token and pageSize but description does not explain pagination behavior, result limits, or when continuation is required. LLMs cannot reason about multi-page traversal.
Parameter descriptions are minimal. 'value' in prepare_control and write_control is described as 'Value to set' with no guidance on format, range, or valid types. 'reason' lacks context on why it matters.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 66 | 2026-07-28+ | v2 |
Perform a low-risk Operator-defined Semantic Control Operation.
Error handling not visible in tool implementations. No recovery guidance, error classification, or actionable messages. If a control operation fails, LLM has no guidance on retry vs user-fixable vs fatal.
No confirmation or dry-run pattern for destructive operations. prepare_control + commit_control is a two-step gate, but write_control executes immediately with no undo path.