omv-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PORTAINER_API_KEY | Yes | API key for Portainer, used to manage Docker stacks |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| completions | {} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_system_infoA | OMV/host info: hostname, OMV version, kernel, CPU, memory, uptime, load. |
| disk_usageA | Human-readable filesystem usage ( |
| list_block_devicesA | Block devices with size/model/serial/fs/mountpoint/uuid ( |
| top_processesA | Top processes by cpu or mem ( |
| memory_infoB | RAM and swap usage in bytes ( |
| available_updatesA | APT packages with pending upgrades (name/versions only). {count, packages}. |
| service_statusB | systemd active/enabled state per unit ( |
| service_logsA | Last |
| network_infoA | Network interfaces with addresses ( |
| run_commandA | Run an arbitrary shell command on the NAS as root. UNRESTRICTED and UNGUARDED -- there is no allow/deny-list. Prefer the specific tools (omv_rpc, docker, stacks) over hand-editing config. Returns {stdout, stderr, exit_code}. |
| apply_updatesA | Install pending APT upgrades ( |
| rebootA | Reboot the NAS. Requires confirm=True. |
| shutdownA | Power off the NAS. Requires confirm=True. |
| list_filesystemsA | All filesystems OMV knows about (mounted or not). |
| list_disksB | Physical disk devices known to OMV. |
| smart_statusB | S.M.A.R.T. overview per device (overall health status, from OMV). |
| smart_healthA | SMART overall-health self-assessment for one device (PASSED/FAILED).
|
| smart_attributesA | Full SMART attribute table for one device ( |
| smart_selftest_logB | SMART self-test history for one device ( |
| disk_temperaturesA | Current temperature (°C) of every physical disk ( |
| run_smart_testA | Start a SMART self-test on a device. |
| cpu_tempB | CPU temperature in °C (OMV CpuTemp plugin). |
| sensors_readoutA | All lm-sensors readings as structured JSON ( |
| storage_summaryA | Per-mount usage for the OS + data disks ( |
| list_shared_foldersB | OMV shared folders (name, path, device). |
| list_smb_sharesB | Configured SMB/CIFS shares. |
| omv_rpcA | Generic OMV RPC passthrough: |
| list_containersA | Docker containers with names/status/image ( |
| container_statsA | Live per-container CPU%, memory, net/block I/O ( |
| container_inspectA | Full |
| list_imagesB | Docker images (repo, tag, id, size). |
| list_volumesB | Docker volumes (name, driver, mountpoint). |
| list_networksC | Docker networks (id, name, driver, scope). |
| docker_system_dfA | Disk usage + reclaimable space by images/containers/volumes/build cache
( |
| container_logsA | Last |
| restart_containerA | Restart a single container (seconds of downtime). |
| start_containerB | Start a stopped container. |
| stop_containerA | Stop a running container (downtime until restarted). Requires confirm=True. |
| docker_execA | Run a shell command inside a container as its user. UNRESTRICTED -- no allow/deny-list. Returns {stdout, stderr, exit_code}. |
| docker_pruneA | Reclaim space by removing stopped containers, dangling images, unused
networks and build cache ( |
| list_stacksA | Portainer stacks (id, name, status). |
| get_stack_composeC | The full compose file for a Portainer stack. |
| start_stackA | Start a stopped stack (brings its containers up). |
| stop_stackA | Stop a running stack (takes all its containers down). Requires confirm=True. |
| restart_stackA | Stop then start a stack (downtime during the cycle). Requires confirm=True. |
| update_stackA | Redeploy a stack with the given compose YAML. DESTRUCTIVE: recreates containers (brief downtime). Requires confirm=True. Existing Env is preserved automatically. |
| list_usersC | Non-system OMV users. |
| list_groupsC | Non-system OMV groups. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| diagnose_storage_health | |
| triage_containers | |
| whats_using_space | |
| audit_shares_and_permissions |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| System info | Live host/OMV info (hostname, version, kernel, cpu, memory, uptime). |
| Storage overview | Per-mount usage for the OS + data disks. |
| Health snapshot | Composite: SMART overall, disk temps, CPU temp, filesystem usage. |
| Portainer stacks | Portainer stacks (id, name, status). |
TDQS
Scored across 48 tools
Most tools have clearly distinct purposes, but smart_status vs smart_health and disk_usage vs storage_summary overlap enough to cause confusion. Overall, an agent can usually tell tools apart with careful reading.
Naming follows a loose pattern: list_* for enumeration and verb_object for actions, but there are outliers like docker_system_df, omv_rpc, cpu_temp, and container_stats. Mixed conventions are still readable but not consistently applied.
48 tools is far beyond the typical 3-15 range and the 25+ threshold. The high granularity (e.g., six SMART-specific tools) feels excessive, especially since generic run_command and omv_rpc already exist for arbitrary operations.
The tool set covers monitoring and lifecycle operations for Docker/stacks and system info, but lacks CRUD for OMV shared folders, users, groups, and SMB shares. The unrestricted omv_rpc and run_command fill gaps but bypass the safer specific tools.