Agent skill

Unraid

by dinglebear-ai in dinglebear-ai/unraid

Query and monitor an Unraid NAS/homelab server — array health, disk temperatures, Docker containers, virtual machines, system metrics, notifications, alerts, shares, UPS status, log files, network…

MITAuto-check passedDevOps & Cloud

Install Unraid

skills CLI
$ npx skills add dinglebear-ai/unraid --skill unraid -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install dinglebear-ai/unraid unraid --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/dinglebear-ai/unraid.git skills-src && mkdir -p .claude/skills && cp -r skills-src/agents/unraid-rs/skills/unraid .claude/skills/unraid && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
unraid
GitHub stars
135
Token cost
~2.8k tokens
SKILL.md length
741 words
Files
1
Skills in repo
2
Repo updated
First seen
Licence
MIT

At a glance

Query and monitor an Unraid NAS/homelab server — array health, disk temperatures, Docker containers, virtual machines, system metrics, notifications, alerts, shares, UPS status, log files, network…

  • Works in 3 steps: MCP tool unraid (preferred when available) → CLI binary runraid (fallback) → Direct GraphQL curl (last resort)
  • The user asks about their Unraid server
  • SKILL.md covers Tier 1 — MCP Tool (preferred), Tier 2 — CLI Binary, Tier 3 — Direct GraphQL curl and Important gotchas, plus 1 more section
  • Calls curl, npx and cargo; needs UNRAID_API_KEY and UNRAID_RMCP_TOKEN

What it does

Unraid is an agent skill from dinglebear-ai/unraid. Query and monitor an Unraid NAS/homelab server — array health, disk temperatures, Docker containers, virtual machines, system metrics, notifications, alerts, shares, UPS status, log files, network, plugins, parity history, registration, rclone backups, remote access, and Unraid Connect. Use this skill whenever the user asks about their Unraid server, array state, disk health, SMART status, parity check, Docker containers running on Unraid, Unraid VMs, Unraid memory or CPU usage, Unraid notifications or alerts…

Its SKILL.md is about 2.8k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in DevOps & Cloud, covering Containers, MCP servers and GraphQL. It works with Docker, Model Context Protocol, GraphQL and Google Gemini. The repository describes itself as: Query, monitor, and manage Unraid servers via GraphQL API through MCP tools. Supports system info, Docker, VMs, array/parity, notifications, plugins, rclone, and live telemetry. The licence is MIT.

When your agent uses it

  • The user asks about their Unraid server
  • Docker containers running on Unraid
  • Unraid notifications
  • UPS battery on Unraid

Example prompts

  • “unraid”
  • “parity”
  • “Unraid docker”
  • “/unraid”

Requirements

  • Node.js
  • Docker
  • A credential in UNRAID_API_KEY
  • A credential in UNRAID_RMCP_TOKEN

Workflow steps

3 steps, taken from the first numbered list in SKILL.md.

  1. MCP tool unraid (preferred when available)
  2. CLI binary runraid (fallback)
  3. Direct GraphQL curl (last resort)

What it can do on your machine

Read from SKILL.md and the folder at commit 6d00e73. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • curl
    • npx
    • cargo

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use curl and npx, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • UNRAID_API_KEY
    • UNRAID_RMCP_TOKEN

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Unraid loads about 2.8k tokens when it runs. Until then it costs about 203 tokens; SKILL.md has 741 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~203
When it runs · the whole SKILL.md, loaded when a task matches
~2.8k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from dinglebear-ai/unraid at commit 6d00e73, republished under its MIT licence (© dinglebear-ai). 741 words, ~2,801 tokens.

Download SKILL.mdSave it as .claude/skills/unraid/SKILL.md (or your agent's skills folder).
name
unraid
description
Query and monitor an Unraid NAS/homelab server — array health, disk temperatures, Docker containers, virtual machines, system metrics, notifications, alerts, shares, UPS status, log files, network, plugins, parity history, registration, rclone backups, remote access, and Unraid Connect. Use this skill whenever the user asks about their Unraid server, array state, disk health, SMART status, parity check, Docker containers running on Unraid, Unraid VMs, Unraid memory or CPU usage, Unraid notifications or alerts, Unraid shares, UPS battery on Unraid, Unraid logs, or anything related to an Unraid system. Always invoke this skill when the user mentions "unraid", "array", "parity", "Unraid docker", "Unraid metrics", or asks about NAS health on an Unraid box — even if they don't use the word "skill".

Unraid Server Skill

Access to an Unraid NAS server. Three access tiers in priority order:

  1. MCP tool unraid (preferred when available)
  2. CLI binary runraid (fallback)
  3. Direct GraphQL curl (last resort)

Read vs. write. Query actions are read-only and require the unraid:read scope. The server also exposes mutating actions — Docker and VM lifecycle (docker_start/docker_stop/vm_start/vm_force_stop/…), array start/stop, parity check control, and notification create/delete — which require the unraid:admin scope. Do not assume a call is safe because it is on this tool; check the action before running it, and confirm with the user before any write.


Tier 1 — MCP Tool (preferred)

The MCP server exposes a single tool named unraid that accepts an action parameter.

unraid(action="<action>")
All actions

List actions (disks, docker, vms, shares, services, plugins, parity_history, notifications) accept optional pagination/filtering params on the MCP surface: limit, offset, and where relevant state / name filters. They return a {items, total, limit, offset, has_more, next_offset} envelope. MCP responses are truncated at ~40 KB. (The CLI does not take these params.)

ActionWhat it returnsRequired paramsOptional params
arrayArray state, capacity (TB), parity status, data disks, cache pools——
disksAll physical disks: SMART status, temp, size, interface, partitions—limit, offset, name
dockerAll containers: name, state, status, ports, update availability—limit, offset, state, name
docker_logsContainer log linesid (container ID)tail (default 100)
vmsVirtual machines and their state—limit, offset, state, name
serverServer name, LAN/WAN IP, local/remote URL, GUID, online status——
infoOS, CPU (brand/cores/threads/speed), memory layout, Unraid + kernel versions——
sharesUser shares: name, size/used/free (KB), cache setting, allocator—limit, offset, name
notificationsUnread counts by severity + active warnings and alerts with detail—limit, offset
log_filesList of available log files with path, size, modified date——
log_fileContents of one log filepathlines, start_line
servicesSystem services: name, online status, version, uptime—limit, offset, name
networkNetwork access URLs: type, name, IPv4, IPv6——
upsUPS devices: battery %, runtime estimate, health, input/output voltage, load——
ups_configUPS monitoring config: service, cable, type, device, shutdown thresholds——
metricsLive CPU %, per-core %, memory used/total/swap, temperature sensors——
statusServer reachability/health snapshot (observability) — MCP-only, no CLI command——
pluginsInstalled community plugins with name and version—limit, offset, name
parity_historyAll past parity check results: date, duration, speed, errors—limit, offset
varsSystem config variables: timezone, model, protocol enables, reg state——
registrationLicense type, state, expiration date——
flashUSB flash drive vendor and product (guid omitted — null at runtime)——
rcloneRclone backup remotes (name, type) and drives——
remote_accessWAN access type, port forwarding config——
connectUnraid Connect dynamic remote access: enabled/running type, settings——
helpBuilt-in tool documentation (no auth required)——
Common queries
# Array health + disk status
unraid(action="array")

# Live CPU/memory/temperature dashboard
unraid(action="metrics")

# All Docker containers
unraid(action="docker")

# Logs for a specific container (get id from docker action first)
unraid(action="docker_logs", id="abc123def456", tail=50)

# Active warnings/alerts
unraid(action="notifications")

# Physical disk SMART status and temperatures
unraid(action="disks")

# Unraid shares with sizes
unraid(action="shares")

# UPS battery and power
unraid(action="ups")

# List log files, then read one
unraid(action="log_files")
unraid(action="log_file", path="/var/log/syslog", lines=100)

# System info (OS, CPU, memory layout, versions)
unraid(action="info")

# Parity check history
unraid(action="parity_history")

Show full SKILL.md (305 more words)Show less

Tier 2 — CLI Binary

Binary: runraid — invoked on demand through npx -y @dinglebear/unraid ..., installed persistently from npm, or built locally with cargo build --release.

All commands accept --json for machine-readable output.

bash
UNRAID_BIN="$(command -v runraid)"

# Core queries
$UNRAID_BIN array
$UNRAID_BIN disks
$UNRAID_BIN docker
$UNRAID_BIN docker logs <container_id> [--tail N]
$UNRAID_BIN vms
$UNRAID_BIN server
$UNRAID_BIN info
$UNRAID_BIN shares
$UNRAID_BIN notifications
$UNRAID_BIN metrics

# Logs
$UNRAID_BIN log-files              # or: log files
$UNRAID_BIN log <path> [--lines N] [--start-line N]
$UNRAID_BIN log-file <path>        # alias

# System
$UNRAID_BIN services
$UNRAID_BIN network
$UNRAID_BIN vars
$UNRAID_BIN registration
$UNRAID_BIN flash
$UNRAID_BIN plugins

# UPS
$UNRAID_BIN ups
$UNRAID_BIN ups-config             # or: ups config

# Storage / backup
$UNRAID_BIN parity-history         # or: parity history
$UNRAID_BIN rclone

# Remote access
$UNRAID_BIN remote-access          # or: remote access
$UNRAID_BIN connect

# JSON output (any command)
$UNRAID_BIN metrics --json
$UNRAID_BIN array --json

The CLI requires UNRAID_API_URL and UNRAID_API_KEY environment variables to be set.


Tier 3 — Direct GraphQL curl

Use when both MCP and CLI are unavailable.

The query shapes below are hand-transcribed and can drift. src/graphql.rs (the UnraidClient methods) is the source of truth for the exact queries each action runs — check it if a field is rejected or missing.

bash
# Auth: x-api-key header; endpoint from UNRAID_API_URL env var
curl -s -X POST "$UNRAID_API_URL" \
  -H "x-api-key: $UNRAID_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query":"query { server { id name status lanip wanip localurl remoteurl } }"}'

# Array state
curl -s -X POST "$UNRAID_API_URL" \
  -H "x-api-key: $UNRAID_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query":"query { array { state capacity { kilobytes { free used total } } parities { id name status temp } disks { id name status temp numErrors } caches { id name status } } }"}'

# Docker containers
curl -s -X POST "$UNRAID_API_URL" \
  -H "x-api-key: $UNRAID_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query":"query { docker { containers { id names image state status autoStart isUpdateAvailable webUiUrl } } }"}'

# Live metrics
curl -s -X POST "$UNRAID_API_URL" \
  -H "x-api-key: $UNRAID_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query":"query { metrics { cpu { percentTotal } memory { total used available percentTotal } temperature { summary { average warningCount criticalCount } } } }"}'

# Notifications / alerts
curl -s -X POST "$UNRAID_API_URL" \
  -H "x-api-key: $UNRAID_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query":"query { notifications { overview { unread { warning alert info total } } warningsAndAlerts { id title subject description importance timestamp } } }"}'

# Physical disks (SMART)
curl -s -X POST "$UNRAID_API_URL" \
  -H "x-api-key: $UNRAID_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query":"query { disks { id device type name vendor size serialNum interfaceType smartStatus temperature isSpinning partitions { name fsType size } } }"}'

Important gotchas

BigInt fields arrive as JSON strings

Memory sizes in metrics (total, used, free, swapTotal, swapUsed, swapFree, available) come back as quoted strings like "34359738368", not JSON numbers. Parse with parseInt() / int() before doing arithmetic.

Temperature unit is a GraphQL enum

The metrics.temperature.sensors[].current.unit field is CELSIUS, FAHRENHEIT, or KELVIN — an enum string, not a symbol. Map it yourself: FAHRENHEIT → F, KELVIN → K, CELSIUS → C.

flash.guid can be null at runtime

The Unraid GraphQL schema declares guid as non-nullable, but it returns null on real servers. The flash action intentionally omits guid from the query to avoid a GraphQL error.

Container IDs for docker_logs

Use action="docker" first to get container IDs, then pass one to docker_logs. The id must be the container's Docker ID (e.g., "abc123def456"), not its name.

Log file paths for log_file

Use action="log_files" first to discover available paths, then pass a path to log_file. The path must be exact (e.g., /var/log/syslog).

Auth modes
  • MCP server running on loopback (127.x.x.x) automatically uses no-auth mode.
  • HTTP mode requires either a bearer token (UNRAID_RMCP_TOKEN) or OAuth.
  • Required scope for all data actions: unraid:read (or unraid:admin which satisfies it).
  • help action has no scope requirement.

Workflow patterns

Check server health at a glance
1. unraid(action="server")        — identity and connectivity
2. unraid(action="array")         — array state and disk errors
3. unraid(action="notifications") — active alerts
4. unraid(action="metrics")       — CPU/memory/temp
Investigate a disk issue
1. unraid(action="array")   — which disk has errors or bad status
2. unraid(action="disks")   — SMART status and temperature for that disk
Debug a Docker container
1. unraid(action="docker")              — find container ID and current state
2. unraid(action="docker_logs", id="<container_id>", tail=200)
Check UPS health
1. unraid(action="ups")        — battery %, runtime estimate, load
2. unraid(action="ups_config") — shutdown thresholds
Audit system configuration
1. unraid(action="vars")         — protocol enables, config validity, reg state
2. unraid(action="registration") — license type and expiry
3. unraid(action="plugins")      — installed community plugins

© dinglebear-ai, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in agents/unraid-rs/skills/unraid of dinglebear-ai/unraid.

Open the folder on GitHubat commit 6d00e73

Compare with similar skills

Unraid next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Unraid compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Unraid this skilldinglebear-ai/unraid135—~2.8kAutomated safety check: PassMIT
Build Error AdapterArcadeAI/arcade-mcp1k—~2kAutomated safety check: PassMIT
Oneclickvirtoneclickvirt/oneclickvirt372—~1.1kAutomated safety check: PassGPL-3.0
Devsydevsy-org/devsy111—~1.7kAutomated safety check: PassMPL-2.0
Pluggedin Stack OpsVeriTeknik/pluggedin-app103—~1.3kAutomated safety check: NotesMIT
Docker Agent Deploydocker/skills547—~1.9kAutomated safety check: PassApache-2.0

Similar skills

  • Build Error Adapter

    ArcadeAI/arcade-mcp

    Build new Arcade error adapters from scratch using public Arcade TDK patterns.

    1k GitHub stars~2k tokensUpdated today
    Agent WorkflowsAuto-check passed
  • Oneclickvirt

    oneclickvirt/oneclickvirt

    OneClickVirt operations skill for managing containers, virtual machines, provider nodes, health checks, and metrics through MCP.

    372 GitHub stars~1.1k tokensUpdated 7 days ago
    DevOps & CloudAuto-check passed
  • Devsy

    devsy-org/devsy

    Operate Devsy workspaces and providers for end users. An agent skill from devsy-org/devsy.

    111 GitHub stars~1.7k tokensUpdated today
    DevOps & CloudAuto-check passed
  • Pluggedin Stack Ops

    VeriTeknik/pluggedin-app

    A skill your agent uses when deploying, restarting, verifying or rolling back the containerised plugged.in production stack, when the site returns 404 or 5xx after a deploy or git operation, or when…

    103 GitHub stars~1.3k tokensUpdated 2 days ago
    DevOps & CloudAuto-check: notes
  • Docker Agent Deploy

    docker/skills

    Official

    A skill your agent uses when exposing a Docker Agent as a server (MCP, HTTP API, A2A, ACP, or OpenAI-compatible chat), distributing an agent via an OCI registry with docker agent share, or measuring…

    547 GitHub stars~1.9k tokensUpdated 4 days ago
    DevOps & CloudAuto-check passed
  • Frontmcp Deployment

    agentfront/frontmcp

    A skill your agent uses when deploying, building for production, packaging, or shipping a FrontMCP server.

    146 GitHub stars~9.2k tokensUpdated 2 days ago
    DevOps & CloudAuto-check: notes

More from dinglebear-ai/unraid

  • Unraid

    dinglebear-ai/unraid

    This skill should be used when the user mentions Unraid, asks to check server health, monitor array or disk status, list or restart Docker containers, start or stop VMs, read system logs, check…

    135 GitHub stars~5.4k tokensUpdated 5 days ago
    Auto-check: notes

Categories

Questions about Unraid

What does Unraid do?

Query and monitor an Unraid NAS/homelab server — array health, disk temperatures, Docker containers, virtual machines, system metrics, notifications, alerts, shares, UPS status, log files, network…. Unraid is an agent skill from dinglebear-ai/unraid. Query and monitor an Unraid NAS/homelab server — array health, disk temperatures, Docker containers, virtual machines, system metrics, notifications, alerts, shares, UPS status, log files, network, plugins, parity history, registration, rclone backups, remote access, and Unraid Connect.

When should I use Unraid?

Unraid fits situations like: the user asks about their Unraid server; Docker containers running on Unraid; unraid notifications; UPS battery on Unraid.

How do I install Unraid in Claude Code?

Run `npx skills add dinglebear-ai/unraid --skill unraid -a claude-code`. Or copy the skill folder (agents/unraid-rs/skills/unraid in dinglebear-ai/unraid) into .claude/skills/unraid in your project. Claude Code loads it when a task matches its description.

How do I install Unraid in Codex?

Run `npx skills add dinglebear-ai/unraid --skill unraid -a codex`. Or copy the skill folder (agents/unraid-rs/skills/unraid in dinglebear-ai/unraid) into .agents/skills/unraid in your project. Codex loads it when a task matches its description.

Can I use Unraid in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add dinglebear-ai/unraid --skill unraid -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/unraid, .gemini/skills/unraid, .github/skills/unraid and .opencode/skills/unraid in your project.

What does Unraid need to run?

Going by SKILL.md and its folder, Unraid needs the command-line tools its instructions call (curl, npx and cargo) and credentials named UNRAID_API_KEY and UNRAID_RMCP_TOKEN. Our summary lists: Node.js; Docker; A credential in UNRAID_API_KEY; A credential in UNRAID_RMCP_TOKEN.

Does Unraid access the network?

SKILL.md contains no URLs. Its commands use curl and npx, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Unraid safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Unraid use?

Unraid is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Unraid use?

About 2.8k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Unraid?

Skills that share tags, products or a category with Unraid: Build Error Adapter (ArcadeAI/arcade-mcp, 1k stars), Oneclickvirt (oneclickvirt/oneclickvirt, 372 stars), Devsy (devsy-org/devsy, 111 stars) and Pluggedin Stack Ops (VeriTeknik/pluggedin-app, 103 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Unraid?

dinglebear-ai (a GitHub organization) maintains it in dinglebear-ai/unraid, which has 135 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on October 4, 2026.

Source: dinglebear-ai/unraid on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.