Back to Browse

Unraid MCP Server

Developer ToolsUse Caution3.2MCP RegistryLocal
Free

Server data from the Official MCP Registry

Rust MCP server and CLI for Unraid GraphQL operations across NAS, Docker, VM, and storage workflows.

About

Rust MCP server and CLI for Unraid GraphQL operations across NAS, Docker, VM, and storage workflows.

Security Report

3.2
Use Caution3.2High Risk

This MCP server for Unraid has reasonable architecture with proper dependency management and no obvious malicious patterns. However, there are notable code quality concerns including broad exception handling, potential credential exposure in environment variable handling, and insufficient input validation in some security-sensitive areas. The permissions are appropriate for the server's purpose (Unraid API interaction), but security controls around mutation operations could be stronger. Supply chain analysis found 12 known vulnerabilities in dependencies (0 critical, 7 high severity). Package verification found 1 issue (1 critical, 0 high severity).

4 files analyzed · 21 issues found

Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.

Permissions Required

This plugin requests these system permissions. Most are normal for its category.

HTTP Network Access

Connects to external APIs or services over the internet.

env_vars

Check that this permission is expected for this type of plugin.

File System Read

Reads files on your machine. Normal for tools that analyze or process local data.

File System Write

Writes or modifies files on your machine. Check that this is expected for the tool.

Unverified package source

We couldn't verify that the installable package matches the reviewed source code. Proceed with caution.

What You'll Need

Set these up before or after installing:

Full Unraid GraphQL endpoint URL.Optional

Environment variable: UNRAID_API_URL

Unraid API key.Required

Environment variable: UNRAID_API_KEY

Optional GitHub release tag override for the downloaded Unraid RMCP binary.Optional

Environment variable: UNRAID_RMCP_VERSION

Optional GitHub owner/repo override for release asset downloads.Optional

Environment variable: UNRAID_RMCP_REPO

Optional release download base URL override.Optional

Environment variable: UNRAID_RMCP_RELEASE_BASE_URL

Tracing filter for Unraid RMCP logs.Optional

Environment variable: RUST_LOG

How to Install

Add this to your MCP configuration file:

{
  "mcpServers": {
    "ai-dinglebear-unraid": {
      "env": {
        "RUST_LOG": "your-rust-log-here",
        "UNRAID_API_KEY": "your-unraid-api-key-here",
        "UNRAID_API_URL": "your-unraid-api-url-here",
        "UNRAID_RMCP_REPO": "your-unraid-rmcp-repo-here",
        "UNRAID_RMCP_VERSION": "your-unraid-rmcp-version-here",
        "UNRAID_RMCP_RELEASE_BASE_URL": "your-unraid-rmcp-release-base-url-here"
      },
      "args": [
        "-y",
        "unraid-codex-chathead"
      ],
      "command": "npx"
    }
  }
}

Documentation

View on GitHub

From the project's GitHub README.

Unraid

PyPI ghcr.io

A monorepo of Unraid tooling: two MCP servers (Python and Rust) and three Unraid OS plugins, plus the Claude/Codex agent integrations that surface them.

Repo name. This repo was renamed unraid-mcpunraid on 2026-07-27, and the former standalone runraid and incus-unraid repos were merged in here. The old GitHub name still redirects, so existing plugin install/update URLs keep working. The PyPI package, the container image, the Claude plugin, and the Unraid .plg are all still named unraid-mcp — only the repo changed.

Components

PathWhat it isToolchainBuild / test
unraid-py/unraid-mcp — Python MCP server (GraphQL), the flagship. Published to PyPI as unraid-mcp.Python / uv / hatchlingcd unraid-py && uv run pytest && uv build --wheel
unraid-rs/runraid — Rust MCP server + CLI (single static binary). Crate unraid-rmcp on crates.io, plus a legacy npm wrapper of the same name.Rust / cargocd unraid-rs && cargo fmt --check && cargo clippy --all-targets --features test-support -- -D warnings && cargo test
plugins/mcp/Unraid OS plugin that ships the Python MCP server onto an Unraid box.shell .plg + Pythonbash plugins/mcp/scripts/build-txz.sh <ver> <wheel>
plugins/incus/Unraid OS plugin running Incus system containers ("dev containers") firewalled off the LAN. Includes a NestJS/GraphQL unraid-api backend.shell .plg + NestJS/Vuecd plugins/incus && ./scripts/verify-classic-package.sh && ./tests/classic-contract.sh
plugins/codex/Unraid OS plugin embedding a Codex chathead app-server.shell .plg + Reactcd plugins/codex && ./tests/contract.sh
agents/unraid-py/Claude Code / Codex plugin (name: unraid-mcp) for the Python server.
agents/unraid-rs/Claude Code / Codex plugin (name: runraid) for the Rust server.

Install the agent plugins (one marketplace command, two manifests)

/plugin marketplace add dinglebear-ai/unraid
/plugin install unraid-mcp@unraid-mcp   # Python server
/plugin install runraid@unraid-mcp      # Rust server

The @unraid-mcp suffix is the marketplace name declared in .claude-plugin/marketplace.json, not the repo name — it stays unraid-mcp even though the repo is now dinglebear-ai/unraid.

Both plugins are published from a single repo. Claude reads .claude-plugin/marketplace.json; Codex reads .agents/plugins/marketplace.json. meta-ci.yml asserts the two list the same plugin set, so they cannot drift.

marketplace add accepts the owner/repo shorthand (or a full git URL / local path). After install, Claude Code prompts for the connection settings (the plugin's userConfig).

Plugin credentials need no manual step

The agent plugins ship no Claude Code hooks, and none are needed: both .mcp.json files map your plugin settings into the server environment directly via ${user_config.*}. agents/unraid-rs wires 10 keys (endpoint, API key, TLS skip, bearer token, four OAuth vars); agents/unraid-py wires UNRAID_API_URL and UNRAID_API_KEY. Set them in plugin settings and the server picks them up on next launch.

Optional, for non-plugin installs (systemd, Docker) that want ~/.unraid/.env written to disk:

runraid setup plugin-hook          # or: crgx unraid-rmcp -- setup plugin-hook

unraid-py quickstart (Python MCP server)

The Python server is the flagship. Full documentation — installation, Claude Code / Codex / Gemini setup, configuration, authentication, guardrails, and the tool surface — lives in unraid-py/README.md and unraid-py/docs/. It publishes to PyPI as unraid-mcp (import package unraid_mcp) and launches with uvx unraid-mcp.

unraid-rs quickstart (Rust MCP server + CLI)

cd unraid-rs && cargo build --release      # → target/release/runraid
runraid setup plugin-hook                  # writes ~/.unraid/.env
runraid array                              # CLI
runraid serve mcp                          # MCP over HTTP on :40010
Env varPurpose
UNRAID_API_URLUnraid GraphQL endpoint (required)
UNRAID_API_KEYx-api-key for the Unraid API (required)
UNRAID_API_SKIP_TLS_VERIFYAccept a self-signed Unraid cert (default false)
UNRAID_RMCP_HOST / UNRAID_RMCP_PORTMCP bind address (default 0.0.0.0:40010)
UNRAID_RMCP_TOKENStatic bearer token for /mcp
UNRAID_RMCP_AUTH_MODEbearer (default) or oauth

Full list and the OAuth variables: unraid-rs/CLAUDE.md.

Not read-only. The Rust server exposes both queries and mutations. Read actions need the unraid:read scope; mutating actions (VM and Docker lifecycle, array start/stop, notification writes) need unraid:admin.

Releases

There are two release lanes. release-please manages only unraid-py and unraid-rs — the Python server keeps unprefixed vX.Y.Z tags (the existing audience's scheme) and Rust uses unraid-rs-vX.Y.Z. The Incus and Codex plugins do not use release-please: they are versioned by .github/scripts/plugin_calver.py with fixed-width YYYYMMDD.NNN versions and incus-v* / codex-v* tags (Unraid compares plugin versions as raw strings, so the fixed width is mandatory).

Plugin .txz payloads ship as GitHub release assets, never tracked in git.

License

MIT — see LICENSE.

Reviews

No reviews yet

Be the first to review this server!