An MCP server hosted on an OpenWrt router, providing tools to query and configure router state via ubus, UCI, and shell execution
Strong foundation with clear verb-noun naming (ubus_list, uci_get, uci_apply) and comprehensive parameter schemas. All 8 tools have descriptions and typed input schemas. However, output schemas are not documented, LLMs cannot predict response structure. Parameter descriptions are good but lack format constraints (e.g., timeout ranges, TOTP format). Error handling is present but recovery guidance is minimal. Tool composition is sound: each tool has one responsibility, and chaining IDs are preserved (e.g., uci_apply returns confirmation state for uci_confirm).
Execute an arbitrary command directly (never through a shell) with arguments
Read system logs with optional filtering
Unlock MFA-gated tools with a current 6-digit TOTP code from an authenticator
Call a ubus method with optional JSON arguments
List ubus objects on the bus, optionally filtered by path prefix
Apply a batch of UCI configuration changes with automatic rollback on timeout
Output schemas not documented. LLMs cannot predict response structure for ubus_call, uci_get, uci_apply, or logread. This forces agents to guess at field names and types, increasing errors.
uci_confirm has minimal description (appears to be 'Confirm a pending UCI apply, preventing automatic rollback'). No explanation of when to call it, what state it expects, or what happens on failure.
exec tool accepts arbitrary commands with no validation or sandboxing. While argv-based (not shell-injected), the tool description does not warn about irreversible consequences or suggest safer alternatives (e.g., ubus_call for system queries).
Parameter constraints missing: timeout ranges (uci_apply says 90-600 but not in schema), TOTP code format (mfa_unlock expects 6 digits but not enforced), logread lines default (50) not documented as a constraint.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 67 | 2026-07-28+ | v2 |
Confirm a pending UCI apply, preventing automatic rollback
Read current configuration with uci show, scoped to a specific config, section, or option
Error recovery guidance sparse. Tools return errors but do not guide LLM on retry strategy, alternative tools, or user-fixable vs. fatal conditions. E.g., ubus_call failure does not suggest ubus_list to discover valid methods.