unraid-mcp
Provides tools for managing Docker containers on an Unraid server, including listing, inspecting, viewing logs, networks, port conflicts, update status, and starting/stopping/restarting/pausing/unpausing containers.
Allows interaction with Unraid's official GraphQL API, providing tools for system info, array status and parity operations, Docker and VM management, shares, notifications, metrics, logs, and health checks.
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., "@unraid-mcplist my docker containers and which ones have updates available"
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.
unraid-mcp
MCP server for Unraid's official GraphQL API (Unraid 7.3.2 / unraid-api 4.35.1).
Connects to /graphql on the standard web port — not port 31337.
Install
claude mcp add unraid -e UNRAID_HOST=tower.local -e UNRAID_API_KEY=your-key -- uvx unraid-mcpRelated MCP server: unraid-code-mode-mcp
Tool surface
One MCP tool: unraid(domain, action, **params).
Domain | Read actions | Write actions (gated) |
|
| — |
|
|
|
|
|
|
|
|
|
|
| — |
|
|
|
|
| — |
|
| — |
|
| — |
Configuration
Env var | Default | Meaning |
| — (required unless | Hostname/IP of the Unraid server |
| — (required) | API key from |
|
| Full endpoint override |
|
| Master write switch |
|
|
|
|
| Read timeout in seconds |
|
| Response cap |
|
|
|
|
| Logging level |
Safety
Two independent write locks prevent accidental mutations:
Server-level: writes are refused unless
UNRAID_ALLOW_WRITES=1. Default is read-only. Refusal is a structuredwrite_disablederror naming the env var.Call-level: every write action requires
confirm=trueor an accepted MCP elicitation prompt.
For defence in depth, use a VIEWER-role API key so the Unraid API itself rejects mutations regardless of server configuration.
docker restart is implemented as stop then start (the API has no restart
mutation).
Non-goals (v1)
Not implemented: disk add/remove, clearArrayDiskStatistics, removeContainer,
VM forceStop/reset, API-key mutations, OIDC, rclone, updateSettings, flash
backup, plugin install/remove, GraphQL subscriptions.
Each returns a structured not_implemented error naming the reason.
Development
uv sync
uv run ruff check .
uv run ruff format --check .
uv run mypy
uv run pytestLive tests against a real Unraid server (read-only):
UNRAID_LIVE=1 uv run --env-file .env pytest tests/test_live.pyLicense
MIT
Available Tools
1 toolunraidUnraidC
Single entry point for all Unraid operations.
Use health.capabilities to discover available actions.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | ||
| domain | Yes | ||
| params | No | ||
| confirm | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does not explain the 'confirm' flag's role in gating destructive actions, whether operations mutate state, permission/auth requirements, or rate limits. For a multi-purpose gateway that can perform writes, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the tool's role and followed by the discovery instruction. Efficient and free of filler, though too terse given the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a complex gateway tool with 0% schema coverage and no annotations, yet the description explains only the entry-point concept. It omits the domain/action/params interaction and confirm semantics; the output schema covers return values, but the call contract remains underspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description adds almost no parameter meaning. It hints that 'action' comes from health.capabilities, but says nothing about 'domain', the free-form 'params' object, or the 'confirm' boolean, leaving four undocumented parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool is a 'single entry point for all Unraid operations', which clarifies its role as a dispatcher rather than a specific verb+resource. However, it never says what kinds of operations exist (storage, VMs, shares, etc.), so an agent still needs to call health.capabilities to understand the tool's actual scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives one actionable step: 'Use health.capabilities to discover available actions', which is genuine usage guidance for a discovery-first gateway. There are no sibling tools to distinguish from and no when-not-to-use guidance, so it is implied usage at best.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
v0.1.0- First observed
unraid
TDQS
Scored across 1 tool
With only one tool, there is no possibility of confusion between tools. The tool is a single entry point, so all operations funnel through it, but that is an intra-tool concern rather than inter-tool ambiguity.
The lone tool is named 'unraid', which is trivially consistent since there is no other name to conflict with. However, it does not follow a descriptive verb_noun convention, making it slightly less predictable than ideal.
One tool for an entire Unraid management server is far too few. The domain typically involves discrete operations for array, disk, Docker, VM, and share management, and a single catch-all tool is a poor fit for that scope.
The tool claims to be a single entry point for all Unraid operations with capability discovery, suggesting broad coverage. The opaque surface and lack of explicit operations is a minor gap, but the design intends complete access.
Maintenance
Related MCP Connectors
Monday.com MCP — wraps the Monday.com GraphQL API (BYO API key)
Governed MCP gateway: one endpoint for your tools, with credential custody and audit log.
Manage CloudPepper servers, Odoo instances, backups, and deployments over MCP.
- SupabaseOAuthcom.supabase
MCP server for interacting with the Supabase platform
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAutomatically generates MCP tools from any GraphQL API by introspecting its schema, supporting queries, mutations, and authentication.5GPL 3.0
- AlicenseAqualityDmaintenanceA code-mode MCP server for the Unraid 7.2+ GraphQL API that exposes search and execute tools, allowing LLM agents to introspect and call any GraphQL field via sandboxed JavaScript.21MIT
- AlicenseNot gradedqualityDmaintenanceExposes the UniFi Network Integration API as MCP tools, dynamically loaded from JSON manifests, with read-only mode by default.MIT
- AlicenseNot gradedqualityBmaintenanceRead-only MCP server for TrueNAS SCALE 25.10+ that connects via JSON-RPC 2.0 WebSocket API, providing tools to inspect storage, shares, services, system info, jobs, and alerts.21 npmMIT