This server provides tools and resources to interact with an openmediavault network attached storage (NAS) system.
This MCP server exposes 17 system administration tools with good naming conventions and reasonable descriptions. However, it has significant gaps in schema completeness, parameter descriptions, and error handling guidance. Most tools are read-only (11 of 17), which simplifies safety concerns but means the tool set is primarily discovery-oriented. Tool names follow verb-noun conventions consistently (reboot, shutdown, list_disks, get_user, delete_user, create_group, update_group), which aligns with arcade.dev pattern:tool. Descriptions are generally present but vary in quality, some are 1 - 2 lines while others exceed 100 chars. The major issues are: (1) NO input parameter descriptions on most tools, the rubric requires every parameter to have a description explaining what it controls (pattern:tool-description); (2) output schemas are not documented, so LLMs cannot plan downstream calls or extract specific fields; (3) no error handling guidance, recovery instructions, or permission checks documented; (4) irreversible operations (reboot, shutdown, delete_user, delete_group) lack dry-run or confirmation patterns; (5) security considerations like permission gating or audit logging are not visible in the tool definitions. The server does use tool annotations (openWorldHint, destructiveHint) which is good for protocol alignment. Tool composition is sound, each tool has a single responsibility and names are unambiguous.
Create a new group account. The name is required, other parameters like the group ID (GID), a list of members or a comment are optional. Args: name: The name of the group. gid: The group ID. members: The list of members to be added to the group. comment: The comment for the group. Returns: A dictionary containing the detailed account information of the created group.
Delete a group account of the system based on their name. Returns: A dictionary containing the detailed account information of the deleted group to confirm the deletion.
Delete a user account of the system based on their name. Returns: A dictionary containing the detailed account information of the deleted user to confirm the deletion.
Get detailed information about a group account of the system based on their name. Returns: A dictionary containing the detailed group account information.
Get the SMART information of the specified disk. Args: device_file: The device file of the disk. Returns: A dictionary containing the SMART information.
Output schemas are not documented. LLMs cannot plan downstream calls or extract required fields. Tools return 'A dictionary containing...' but the actual structure is not specified. This violates pattern:tool (Dimension 1.D) and makes it impossible for agents to compose tools effectively.
No parameter descriptions on most tools. The 'device_file' parameter in get_smart_identity has a description, but most single-parameter tools lack context. Per the rubric, every parameter needs a description explaining what it controls (pattern:tool-description). 'name' appears in get_user, delete_user, get_group but without clarification of format or constraints.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 61 | <=2025-11-25 | v2 |
| 2026-03-09 | D | 52 | - | v1 |
Get system information, e.g. hostname, CPU model, CPU usage, memory usage, load average, date and time, version, uptime, etc. Returns: A dictionary containing the system information.
Get detailed information about a user account of the system based on their name. Returns: A dictionary containing the detailed user account information.
List all available disks in the system. Returns: A dictionary containing the list of all available disks.
List all available filesystems in the system. Returns: A dictionary containing the list of all available filesystems.
List all group accounts of the system. Returns: A dictionary containing the list of all group accounts of the system.
List all configured shared folders. Returns: A dictionary containing the list of all shared folders.
List the SMART information and status of all available disks in the system. Returns: A dictionary containing the list of all available disks and their SMART status and information.
List ist of user accounts of the system, including their names, UIDs, GIDs, comments, directories, shells, groups, and other details. Returns: A dictionary containing the list of all user accounts.
A tool that reboots the system.
A tool that shuts down the system.
A tool that puts the system into standby mode.
Update an existing group account. The name is required, other parameters like the list of members or comment are optional. Args: name: The name of the group. members: The list of members of the group. comment: The comment for the group. Returns: A dictionary containing the detailed account information of the updated group.
Irreversible operations lack confirmation or dry-run patterns. reboot, shutdown, delete_user, and delete_group execute immediately with no confirmation step. Per pattern:confirmation-request, agents should be able to preview consequences before destructive actions. This is a safety gap.
No error handling guidance. Tools do not document what errors are retryable, what the LLM should ask the user about, or how to recover. Per pattern:recovery-guide, error responses must tell the LLM what to do next. Current tool descriptions omit this entirely.
Permission gating not visible. Tools like delete_user and delete_group lack evidence of permission checks. Per pattern:permission-gate, destructive operations should verify the calling agent has authority. No permission declarations in tool definitions.
No audit logging or traceability annotations. Per pattern:audit-trail, agent-initiated actions must be logged for compliance and incident response. Tool definitions do not declare logging requirements or permission scopes.
Multi-parameter tools lack parameter relationship documentation. create_group and update_group accept optional parameters (gid, members, comment) but do not document interdependencies or constraints. Per pattern:tool-description, undocumented dependencies cause silent misuse.
List tools do not document pagination or result limits. Per pattern:paginated-result (Dimension 1.D), tools returning lists should accept limit/offset parameters and document the maximum result set. list_disks, list_filesystems, list_users, list_groups silently pass {'start': 0, 'limit': -1} to the backend but the front-end tool description does not explain pagination behavior to the LLM.