unraid
Unraid API Skill
⚠️ MANDATORY SKILL INVOCATION ⚠️
YOU MUST invoke this skill (NOT optional) when the user mentions ANY of these triggers:
- "Unraid status", "disk health", "array status"
- "Unraid containers", "VMs on Unraid", "Unraid logs"
- "check Unraid", "Unraid monitoring", "server health"
- Any mention of Unraid servers or system monitoring
Failure to invoke this skill when triggers occur violates your operational requirements.
Query and monitor Unraid servers using the GraphQL API. Access all 27 read-only endpoints for system monitoring, disk health, logs, containers, VMs, and more.
Quick Start
Set your Unraid server credentials:
export UNRAID_URL="https://your-unraid-server/graphql"
export UNRAID_API_KEY="your-api-key"
Get API Key: Settings → Management Access → API Keys → Create (select "Viewer" role)
Use the helper script for any query:
./scripts/unraid-query.sh -q "{ online }"
Or run example scripts:
./scripts/dashboard.sh # Complete multi-server dashboard
./examples/disk-health.sh # Disk temperatures & health
./examples/read-logs.sh syslog 20 # Read system logs
Core Concepts
GraphQL API Structure
Unraid 7.2+ uses GraphQL (not REST). Key differences:
- Single endpoint:
/graphqlfor all queries - Request exactly what you need: Specify fields in query
- Strongly typed: Use introspection to discover fields
- No container logs: Docker container output logs not accessible
Two Resources for Stats
info- Static hardware specs (CPU model, cores, OS version)metrics- Real-time usage (CPU %, memory %, current load)
Always use metrics for monitoring, info for specifications.
Common Tasks
System Monitoring
Check if server is online:
./scripts/unraid-query.sh -q "{ online }"
Get CPU and memory usage:
./scripts/unraid-query.sh -q "{ metrics { cpu { percentTotal } memory { used total percentTotal } } }"
Complete dashboard:
./scripts/dashboard.sh
Disk Management
Check disk health and temperatures:
./examples/disk-health.sh
Get array status:
./scripts/unraid-query.sh -q "{ array { state parityCheckStatus { status progress errors } } }"
List all physical disks (including cache/USB):
./scripts/unraid-query.sh -q "{ disks { name } }"
Storage Shares
List network shares:
./scripts/unraid-query.sh -q "{ shares { name comment } }"
Logs
List available logs:
./scripts/unraid-query.sh -q "{ logFiles { name size modifiedAt } }"
Read log content:
./examples/read-logs.sh syslog 20
Containers & VMs
List Docker containers:
./scripts/unraid-query.sh -q "{ docker { containers { names image state status } } }"
List VMs:
./scripts/unraid-query.sh -q "{ vms { name state cpus memory } }"
Note: Container output logs are NOT accessible via API. Use docker logs via SSH.
Notifications
Get notification counts:
./scripts/unraid-query.sh -q "{ notifications { overview { unread { info warning alert total } } } }"
Helper Script Usage
The scripts/unraid-query.sh helper supports:
# Basic usage
./scripts/unraid-query.sh -u URL -k API_KEY -q "QUERY"
# Use environment variables
export UNRAID_URL="https://unraid.local/graphql"
export UNRAID_API_KEY="your-key"
./scripts/unraid-query.sh -q "{ online }"
# Format options
-f json # Raw JSON (default)
-f pretty # Pretty-printed JSON
-f raw # Just the data (no wrapper)
Additional Resources
Reference Files
For detailed documentation, consult:
references/endpoints.md- Complete list of all 27 API endpointsreferences/troubleshooting.md- Common errors and solutionsreferences/api-reference.md- Detailed field documentation
Helper Scripts
scripts/unraid-query.sh- Main GraphQL query toolscripts/dashboard.sh- Automated multi-server inventory reporter
Quick Command Reference
# System status
./scripts/unraid-query.sh -q "{ online metrics { cpu { percentTotal } } }"
# Disk health
./examples/disk-health.sh
# Array status
./scripts/unraid-query.sh -q "{ array { state } }"
# Read logs
./examples/read-logs.sh syslog 20
# Complete dashboard
./scripts/dashboard.sh
# List shares
./scripts/unraid-query.sh -q "{ shares { name } }"
# List containers
./scripts/unraid-query.sh -q "{ docker { containers { names state } } }"
🔧 Agent Tool Usage Requirements
CRITICAL: When invoking scripts from this skill via the zsh-tool, ALWAYS use pty: true.
Without PTY mode, command output will not be visible even though commands execute successfully.
Correct invocation pattern:
<invoke name="mcp__plugin_zsh-tool_zsh-tool__zsh">
<parameter name="command">./skills/SKILL_NAME/scripts/SCRIPT.sh [args]</parameter>
<parameter name="pty">true</parameter>
</invoke>
More from jmagar/claude-homelab
memos
Manage notes and memos in self-hosted Memos service. Use when the user asks to "save this to memos", "create a memo", "search my memos", "find notes about X", "what did I write about", "add a note", "capture this", "remember this", "save this thought", or mentions note-taking, knowledge management, or personal notes.
66plex
Control Plex Media Server - browse libraries, search media, check what's playing, view recently added. Use when the user asks to "check Plex", "search Plex", "what's on Plex", "recently added", "who's watching", "Plex sessions", "Plex library", "browse movies", "browse TV shows", or mentions Plex media server.
22tailscale
This skill should be used when managing Tailscale mesh VPN networks. Use when the user asks to "check tailscale status", "list tailscale devices", "ping a device", "send file via tailscale", "tailscale funnel", "tailscale serve", "create auth key", "check who's online", "tailscale exit node", "Magic DNS", or mentions Tailscale network management, tailnet operations, or VPN connectivity.
21qbittorrent
Manage torrents with qBittorrent. Use when the user asks to "list torrents", "add torrent", "pause torrent", "resume torrent", "delete torrent", "check download status", "torrent speed", "qBittorrent stats", or mentions qBittorrent/qbit torrent management.
20sonarr
This skill should be used when managing TV shows in Sonarr. Use when the user asks to "add a TV show", "search Sonarr", "find a series", "add to Sonarr", "remove a show", "check if show exists", "Sonarr library", "TVDB lookup", or mentions TV show management or Sonarr operations.
14zfs
>
14