Unraid Mcp

devops-infra MCP Server

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.

VerifiedFreshInstall Ready
devops-infradevops-infradocker
5 views130 stars37 forksMIT

Why This Matters

Discovered via github-topic:mcp-server and last synced 2d ago.

VerifiedFreshInstall Ready
Source
github-topic:mcp-server
Stars
130
Last synced
2d ago
Install
Instructions detected

Install

1. Install the package

uvx unraid-mcp

2. Add to claude_desktop_config.json

{
  "mcpServers": {
    "unraid-mcp": {
      "command": "uvx",
      "args": [
        "unraid-mcp"
      ]
    }
  }
}

Config file location: ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) / %APPDATA%\Claude\claude_desktop_config.json (Windows)

300
Tools
0
Resources
0
Prompts
Standard I/O
Transport

Available Tools (300)

UNRAID_API_KEY

`x-api-key` for the Unraid API (required)

UNRAID_USE_HTTPS

`true`

UNRAID_MODE

`readonly`

UNRAID_HOST

`tower.local`

UNRAID_PORT

`443`

UNRAID_VERIFY_SSL

No

Variable

Required

UNRAID_ALLOW_USER_MUTATIONS

`false`

test_subscription_query

Probe a raw GraphQL subscription for schema/debug work

display

`system/display_details` (safe direct root)

overview

Unread and archive counts by importance (INFO/WARNING/ALERT)

parity_pause

Pause a running parity check

clear_disk_stats

Clear I/O statistics for a disk (irreversible)

list

All installed plugins with version and module flags

unarchive_all

Move all archived notifications back to unread

add_role

Add a role to an existing key

variables

Full Unraid variable set (timezone, shares, etc.)

setup

Report credential status and print plugin/`.env` setup instructions

stop_array

Stop the Unraid array

disk_details

Single disk: serial, size, temperature

resume

Resume onboarding

mark_unread

Move an archived notification back to unread

add

Install plugins by name

configure_ups

Overwrite UPS monitoring configuration

provider

Single provider details

cpu_telemetry

Snapshot

array

`system/array`, `array/*`

check

Comprehensive health: API latency, array state, alerts, Docker container summary

parity_resume

Resume a paused parity check

details

Direct `customization` root onboarding/language details; activation-code values omitted

delete

Delete an API key (immediately revokes access)

remove_role

Remove a role from an existing key

delete_remote

Delete a rclone remote config (does not delete remote data)

server_status

Snapshot (event-driven)

notification

`delete_archived`

subaction

str

source_path

str

importance

str (INFO/WARNING/ALERT)

roles

list[str]

theme_name

str

UNRAID_MCP_TRANSPORT

No

Root

Used by

network

`system/network_access_urls` (safe direct root)

test_connection

Ping the Unraid API and return latency in ms

parity_cancel

Cancel a running parity check

shares

`disk/shares`

start

Start a VM

create

Create an API key

delete_archived

Permanently delete all archived notifications

cpu

Snapshot

log_tail

Collect

confirm

bool (default `False`)

destination_path

str

list_type

str (UNREAD/ARCHIVE, default UNREAD)

permissions

list[str]

provider_id

str

UNRAID_MCP_HOST

No

info

`system/overview`, `system/display`, health check

customization

`customization/details` (safe direct root; activation-code values omitted), `customization/*`

parity_start

Start a parity check

unmount_disk

Unmount an array disk

config

Config validity and error state

unarchive_many

Unarchive specific notifications by ID

Tool

Purpose

server

`system/server_details` (safe direct root; API key omitted)

diagnose

Full diagnostic dump: auto-start status, reconnect config, per-subscription state (active, last error, data received), error counts, and troubleshooting recommendations

start_array

Start the Unraid array

disks

Physical disk list (ID, device, name)

stop

Gracefully stop a VM

pause

Pause a running VM

archive

Archive a single notification

unraid_help

Returns this reference as Markdown

metrics

`system/metrics`

flash

`system/flash`

add_disk

Add a disk to the array

log_files

List available log files (name, path, size, modified)

networks

All Docker networks: ID, name, driver, scope

reboot

Reboot a VM

recalculate

Recalculate the overview counts

get

Single API key details

remove

Uninstall plugins by name (irreversible without re-install)

configuration

OIDC configuration with default allowed origins

array_state

Snapshot

disk

`flash_backup`

correct

bool

network_id

str

description

str (≤2000)

restart

bool (default `True`)

collect_for

float (default `5.0`)

UNRAID_MCP_DISABLE_HTTP_AUTH

No

parityHistory

`array/parity_history`

core

Core agents, commands, skills, and setup/health workflows for homelab management.

diagnose_subscriptions

Full diagnostic dump of the WebSocket subscription system

parity_status

Current parity check progress, speed, errors

remove_disk

Remove a disk from the array (array must be stopped)

logs

Not available via the Unraid GraphQL API — returns guidance to use `docker logs` on the host

network_details

Single network with IPv6, containers, options, labels

force_stop

Hard power-off a VM (data loss possible)

archive_all

Archive all unread notifications

Subaction

Description

theme

Full theme, partner info, and activation code

public_providers

Public provider list (button text, icon, style)

parity_progress

Snapshot (event-driven)

setting

`update_system_time`

slot

int

vm_id

str

offset

int (default 0)

provider_type

str

timeout

float (default `10.0`)

DOCKER_NETWORK

No

parity_history

Past parity check results

mount_disk

Mount an array disk

flash_backup

Initiate rclone backup of the flash drive to a remote

reset

Reset onboarding/setup state

archive_many

Archive specific notifications by ID

update

Update system settings (JSON key/value input)

list_remotes

All configured rclone remotes with type and parameters

public_theme

Public-facing theme (also the server's current theme)

validate_session

Validate an OIDC session token

ups_status

Snapshot (event-driven)

plugin

`install` / `install_language`

log_path

str

notification_id

str

limit

int (default 20)

config_data

dict

PGID

No

servers

`system/servers`, `system/network`

vms

`vm/*`

infrastructure

Receive, index, and search syslog streams from all homelab hosts via SQLite FTS5.

config_form

Config form schema for a provider type

is_initial_setup

Whether this is a fresh install (`isFreshInstall`)

notifications_overview

Snapshot (event-driven)

vm

`reset`

Parameter

Type

tail_lines

int (default 100, max 10000)

notification_ids

list[str]

key_id

str

settings_input

dict

UNRAID_API_URL

Unraid GraphQL endpoint (required)

PUID

No

notifications

`notification/*`

utilities

Send and manage push notifications via a self-hosted Gotify server.

create_remote

Create a new rclone remote

sso_enabled

Whether SSO is enabled

me

`user/me`

action

str

remote_name

str

name

str

ups_config

dict

Command

Effect

online

`system/online`, `health/test_connection`

plugins

`plugin/list`

providers

All OIDC providers with client ID, scopes, auth rules

memory

Snapshot

notification_feed

Collect

rclone

`rclone/*`

device_id

str

backup_options

dict

title

str (≤200)

names

list[str]

token

str

UNRAID_MCP_PORT

No

Action

Subaction

key

`delete`

disk_id

str

container_id

str

subject

str (≤500)

bundled

bool (default `False`)

path

str

UNRAID_MCP_BEARER_TOKEN

Conditional

vars

`system/network`, `system/variables`

upsConfiguration

`system/ups_config`

Plugin

Category

dev-tools

Scaffold, review, align, and deploy homelab MCP plugins with agents and canonical templates.

services

`system/services`

media

Search movies and TV shows, submit requests, and monitor failed requests via Overseerr.

owner

`system/owner`

UNRAID_MCP_MAX_RESPONSE_BYTES

No

UNRAID_MCP_TRUST_PROXY

Conditional

UNRAID_MCP_GOOGLE_CLIENT_ID

No

UNRAID_MCP_GOOGLE_CLIENT_SECRET

No

UNRAID_MCP_GOOGLE_BASE_URL

Conditional

UNRAID_MCP_GOOGLE_REQUIRED_SCOPES

No

UNRAID_MCP_GOOGLE_ALLOWED_EMAILS

Conditional

UNRAID_MCP_GOOGLE_ALLOWED_DOMAINS

Conditional

UNRAID_MCP_GOOGLE_ALLOW_ANY_USER

No

UNRAID_MCP_GOOGLE_REDIRECT_PATH

No

UNRAID_MCP_GOOGLE_JWT_SIGNING_KEY

Conditional

UNRAID_MCP_GOOGLE_ENCRYPTION_KEY

Conditional

UNRAID_MCP_GOOGLE_STORAGE_DIR

No

UNRAID_ALLOW_INSECURE_TLS

Conditional

UNRAID_MCP_LOG_LEVEL

No

UNRAID_MCP_LOG_FILE

No

UNRAID_AUTO_START_SUBSCRIPTIONS

No

UNRAID_MAX_RECONNECT_ATTEMPTS

No

UNRAID_AUTOSTART_LOG_PATH

No

UNRAID_MCP_ENABLE_RAW_SUBSCRIPTION_PROBE

No

UNRAID_SUBSCRIPTION_MAX_CONNECTIONS

No

UNRAID_SUBSCRIPTION_STARTUP_STAGGER_SECONDS

No

UNRAID_SUBSCRIPTION_COLLECT_MAX_EVENTS

No

UNRAID_SUBSCRIPTION_COLLECT_MAX_BYTES

No

UNRAID_SUBSCRIPTION_COLLECT_MAX_SECONDS

No

UNRAID_SUBSCRIPTION_CACHE_MAX_AGE_SECONDS

No

UNRAID_SUBSCRIPTION_TIMEOUT_MAX_SECONDS

No

UNRAID_CREDENTIALS_DIR

No

unraid

Unified action/subaction router for all operations (including `help` and `subscriptions` diagnostics)

registration

`system/registration`

display_details

Direct `display` root metadata: case, theme, temperature display settings, thresholds, locale

settings

`system/settings`

server_details

Direct `server` root details with owner and URLs; API key omitted

network_access_urls

Direct `network.accessUrls` entries with type, name, IPv4, and IPv6

ups_devices

All UPS devices with battery and power metrics

ups_device

Single UPS device details

server_time

Current server time, time zone, and NTP config

timezones

Available IANA time-zone options (capped)

network_interfaces

Extended network interface list with IPv4/IPv6 address details

assignable_disks

Physical disks not yet in the array (pairs with `add_disk`)

ports

All host port bindings across running containers, sorted by `(host_port, protocol)`.

unpause

Unpause a paused container

remove_container

Remove a container (optionally its image via `with_image`)

update_container

Apply a pending image update to one container

update_containers

Apply image updates to several containers

update_all_containers

Apply all pending container image updates

update_autostart

Set container autostart config

refresh_digests

Refresh image digests (recheck for updates)

update_view_preferences

Update organizer view preferences

possible_roles

All assignable roles

update_system_time

Update timezone / NTP / manual time — can invalidate TLS certs

enable_dynamic_remote_access

Toggle dynamic remote access

bypass

Bypass onboarding

docker_container_stats

Snapshot

container_ids

list[str]

permissions_input

list[dict]

sync_template_paths

Sync Docker template paths

possible_permissions

All grantable resource/action permissions

update_server_identity

Update server name, comment, and model

temperature

Snapshot

with_image

bool (default `False`)

reset_template_mappings

Reset template path mappings to defaults

permissions_for_roles

Permissions implied by given roles

set_override

Set an onboarding override

network_metrics

Snapshot

autostart_entries

list[dict]

config_input

dict

subscription_query

str

create_folder

Create an organizer folder

preview_permissions

Effective permissions for roles and/or permissions

installed_unraid

Raw installed `.plg` filenames

remote_access

Current remote-access settings (type, forward, port)

clear_override

Clear the onboarding override

onboarding

`create_internal_boot_pool`

organizer_input

dict

comment

str

create_folder_with_items

Create a folder containing items

auth_actions

All available auth actions

install_operations

List async plugin-install operations

cloud

Unraid Connect / cloud status (relay, minigraph, key validity)

refresh_internal_boot_context

Recompute the internal boot context

url

str

sys_model

str

rename_folder

Rename a folder

creation_form_schema

JSON-schema form for key creation

install_operation

Status of one install operation

status

Direct `connect` root status: dynamic remote access and settings schema; settings values omitted

internal_boot_context

Internal boot / first-boot context

create_internal_boot_pool

Create an internal boot pool — FORMATS devices, may REBOOT

plugin_install_updates

Collect

connect

`connect/status` (safe direct root; settings values omitted), `connect/*`

plugin_name

str

connect_input

dict

set_folder_children

Set a folder's children

update_api_settings

Update Connect API settings (affects internet reachability)

set_theme

Set the active UI theme

complete

Mark onboarding complete

notifications_warnings

Snapshot (event-driven)

forced

bool (default `False`)

onboarding_input

dict

delete_entries

Delete organizer entries

notify_if_unique

Create a notification only if an identical one does not already exist

sign_in

Sign the server in to Unraid Connect — registers with the cloud

set_locale

Set the UI locale

open

Open the onboarding flow

docker

`delete_entries`

operation_id

str

move_entries_to_folder

Move entries into a folder

install

Async-install a `.plg` URL — runs code as root (poll via `install_operation`)

update_ssh

Update SSH daemon settings (can cut off shell access)

sign_out

Sign the server out of Unraid Connect

close

Close the onboarding flow

test_query

Send a raw GraphQL subscription string directly over WebSocket to debug schema/field issues

notification_type

str (UNREAD/ARCHIVE)

locale

str

move_items_to_position

Move items to a position

install_language

Async-install a language pack — runs code as root

update_temperature

Update temperature sensor configuration

setup_remote_access

Configure remote access — can expose the server to the internet

UNRAID_RMCP_TOKEN

Static bearer token for `/mcp`

UNRAID_RMCP_AUTH_MODE

`bearer` (default) or `oauth`

Path

What it is

UNRAID_API_SKIP_TLS_VERIFY

Accept a self-signed Unraid cert (default `false`)