Model Context Protocol server for managing OPNsense firewalls
Four tools with basic schemas and descriptions, but significant gaps in parameter documentation and output schema clarity. Tool names follow verb_noun convention (setup, list-profiles, test-connection, delete-profile), which is good. However, descriptions are minimal (10-50 chars), parameter descriptions lack detail on constraints and formats, and output schemas are not documented. No error handling guidance visible. The setup tool exposes sensitive parameters (api_key, api_secret) which violates secret-injection pattern. No tool annotations (readOnlyHint, destructiveHint) despite clear risk levels.
Delete a credential profile
List all configured OPNsense profiles
Configure OPNsense connection credentials
Test connection to OPNsense
Credentials exposed as tool parameters: setup tool accepts api_key and api_secret as string parameters. These will be logged in agent traces and prompt history, violating secret-injection pattern. Must use server-side injection via environment variables or keyring.
Output schemas not documented. No visible documentation of what setup, list-profiles, test-connection, and delete-profile return. LLMs cannot plan downstream calls or extract required fields without knowing response structure.
Parameter descriptions lack constraints and formats. 'profile' is described as 'Profile name (default, production, staging, etc.)' but does not specify allowed values, length limits, or character restrictions. 'url' lacks format validation guidance (must be HTTPS? IPv4 or hostname?).
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | <=2025-11-25 | v2 |
No tool annotations despite clear risk levels. delete-profile is DESTRUCTIVE but lacks destructiveHint annotation. list-profiles is READ_ONLY but lacks readOnlyHint. setup is WRITE but lacks annotation. Annotations guide agent behavior and safety.
Minimal error handling guidance. No visible error responses or recovery hints. If setup fails to connect, what should the agent do? If delete-profile fails, is it retryable? LLMs need explicit error classification.