mcp-omv
Enables inspection and management of the Debian host, including system information, running services, logs, apt package operations, and reboot/shutdown actions.
Allows management of Docker resources through the OMV compose plugin, including Compose stacks, services, containers, images, volumes, networks, and Docker stats/actions.
Provides tools for interacting with the OpenMediaVault RPC API to inspect and manage OMV plugins, including filesystems, network interfaces, SMB, NFS, SMART, cron jobs, and configuration apply operations.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-omvshow me the status of my Docker containers and Compose stacks"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-omv
MCP server for OpenMediaVault, delivered as a hardened container (Docker Compose). It lets an MCP client such as Bob inspect and manage:
the Debian host (system info, services, logs, apt, reboot/shutdown),
Docker Compose stacks, services, containers, images, volumes and networks through the OMV compose plugin,
other OMV plugins (filesystems, network, SMB, NFS, SMART, cron, config apply).
It talks to OMV only through the official /rpc.php API. It does not mount the
Docker socket or any host path.
Safe by default
Everything is read only until the administrator enables more:
Tier | Env variable | Examples |
read | always on | list stacks, system info, SMART, shares |
sensitive |
| logs, compose files, |
write |
|
|
destructive |
|
|
See SECURITY.md for the full threat model.
Related MCP server: synapse-rmcp
Tools
Group | Tools |
Host |
|
Tasks |
|
Compose |
|
Docker |
|
Plugins |
|
Long commands return a taskId. If the command is still running, call
omv_task_output with taskId and nextPos.
Deploy on OpenMediaVault
In OMV create a user for the server, with the administrator role, no MFA and a long password.
In the compose plugin shared folder create the stack directory and copy
compose.yamland.env.example(as.env).Create the secrets (files, never committed):
mkdir -p secrets && chmod 700 secrets printf '%s' 'THE_OMV_SERVICE_PASSWORD' > secrets/omv_password openssl rand -base64 48 | tr -d '\n=' > secrets/mcp_token chmod 600 secrets/*Edit
.env(OMV_URL,OMV_USERNAME). Keep tiersfalseat first.Start the stack from the compose plugin, or
docker compose up -d.Check:
curl http://127.0.0.1:8787/healthz
If the OMV web UI uses a private CA, mount the CA file and set NODE_EXTRA_CA_CERTS
in the service environment. Do not disable certificate validation.
Private image
If the GHCR package is private, run once on OMV: docker login ghcr.io -u <user>
with a token that has only read:packages.
Verify the image signature
cosign verify ghcr.io/tommypopescu/mcp_omv:latest \
--certificate-identity-regexp="https://github.com/tommypopescu/.*" \
--certificate-oidc-issuer="https://token.actions.githubusercontent.com"Configure the MCP client (Bob)
{
"mcpServers": {
"omv": {
"type": "streamable-http",
"url": "http://127.0.0.1:8787/mcp",
"headers": { "Authorization": "Bearer ${env:OMV_MCP_TOKEN}" }
}
}
}Set OMV_MCP_TOKEN in your environment to the content of secrets/mcp_token.
If the client is on another machine, publish on a specific LAN IP
(MCP_PUBLISH_HOST), add that IP to MCP_ALLOWED_HOSTS, and put TLS in front
(for example the OMV nginx or a reverse proxy). The token must not travel over plain HTTP on an untrusted network.
Configuration
Variable | Default | Purpose |
| required | OMV base URL, HTTPS |
| required | OMV service account |
| required | file with the password (or |
| required | file with the bearer token, 32+ chars (or |
|
| allow plain HTTP to OMV on a trusted network |
|
| bind address, never |
|
| listen port |
| extra allowed | |
| allowed | |
|
| risk tiers |
|
| per RPC timeout |
|
| how long a tool waits for a background task |
|
| output cap per tool call |
|
| requests per client per minute |
|
|
|
Develop
npm ci
npm run typecheck
npm test
npm run buildCI/CD
build-push.yml builds the image, blocks on Trivy CRITICAL/HIGH findings,
uploads SARIF to the Security tab, pushes to GHCR and signs the digest with
Cosign (keyless). ci.yml runs typecheck, tests and audit. codeql.yml runs
CodeQL. Dependabot updates Actions, npm and the base image. All Actions are
pinned to commit SHAs.
License
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
An MCP server that provides read access to your cloud storage providers, bank accounts and more.
MCP server for mandates, delegation, policy-gated execution, credential grants, and audit.
Governed MCP gateway: one endpoint for your tools, with credential custody and audit log.
Remote MCP server exposing your Node Command fleet (files, shell, processes, browser) to AI hosts.
Related MCP Servers
- AlicenseBqualityDmaintenanceExposes tools to manage and inspect an OpenMediaVault NAS, running on the NAS and communicating over SSH with any MCP-capable coding harness.48MIT
- AlicenseNot gradedqualityAmaintenanceMCP server and CLI for host and container operations, enabling Docker and Compose control, SSH, host inspection, logs, ZFS, and safe file transfer. It exposes flux and scout MCP tools with parity from the original TypeScript server.2AGPL 3.0
- AlicenseNot gradedqualityCmaintenanceRead-only MCP server to inspect allowlisted Docker containers, systemd services, JSONL logs, and HTTP health endpoints without arbitrary shell access.MIT
- AlicenseAqualityAmaintenanceAn MCP server that lets AI assistants manage an OpenMediaVault NAS over SSH using OMV's own RPC interface, covering disks, filesystems, shares, users, S.M.A.R.T. health, services, and configuration changes. It exposes a small set of generic tools to discover and call RPC methods, plus optional shell access.6MIT