# Competitive Analysis: Unraid Integration Projects > **Date:** 2026-02-07 > **Purpose:** Identify features and capabilities that competing Unraid integration projects offer that our `unraid-mcp` server (10 tools, 76 actions, GraphQL-based) currently lacks. ## Table of Contents - [Executive Summary](#executive-summary) - [Project Profiles](#project-profiles) - [1. unraid-management-agent (Go plugin)](#1-unraid-management-agent) - [2. domalab/unraid-api-client (Python library)](#2-domalabunraid-api-client) - [3. mcp-ssh-sre / unraid-ssh-mcp (SSH-based MCP)](#3-mcp-ssh-sre--unraid-ssh-mcp) - [4. PSUnraid (PowerShell module)](#4-psunraid) - [5. ha-unraid (Home Assistant integration)](#5-ha-unraid-home-assistant-integration) - [6. chris-mc1/unraid_api (HA integration)](#6-chris-mc1unraid_api-ha-integration) - [Feature Matrix](#feature-matrix) - [Gap Analysis](#gap-analysis) - [Recommended Priorities](#recommended-priorities) - [Sources](#sources) --- ## Executive Summary Our `unraid-mcp` server provides 10 MCP tools (76 actions) built on the official Unraid GraphQL API. After analyzing six competing projects, we identified several significant gaps: **Critical gaps (high-value features we lack):** 1. **Array control operations** (start/stop array, parity check control, disk spin up/down) 2. **UPS monitoring** (battery level, load, runtime, power status) 3. **GPU metrics** (utilization, temperature, memory, power draw) 4. **SMART disk health data** (per-disk SMART status, errors, power-on hours) 5. **Parity check history** (dates, durations, error counts) 6. **System reboot/shutdown** commands 7. **Services status** (running system services) 8. **Flash drive info** (boot device monitoring) 9. **Plugins list** (installed plugins) **Moderate gaps (nice-to-have features):** 10. **Docker container resource metrics** (CPU %, memory usage per container) 11. **Docker container pause/unpause** operations 12. **ZFS pool/dataset/snapshot management** 13. **User script execution** (User Scripts plugin integration) 14. **Network bandwidth monitoring** (per-interface stats) 15. **Prometheus metrics endpoint** 16. **MQTT event publishing** 17. **WebSocket real-time streaming** (not just subscription diagnostics) 18. **MCP Resources** (subscribable data streams) 19. **MCP Prompts** (guided interaction templates) 20. **Unassigned devices** monitoring **Architectural gaps:** 21. No confirmation/safety mechanism for destructive operations 22. No Pydantic response models (type-safe responses) 23. No Docker network listing 24. No container update capability 25. No owner/cloud/remote-access info queries --- ## Project Profiles ### 1. unraid-management-agent - **Repository:** [ruaan-deysel/unraid-management-agent](https://github.com/ruaan-deysel/unraid-management-agent) - **Language:** Go - **Architecture:** Unraid plugin with REST API + WebSocket + MCP + Prometheus + MQTT - **API Type:** REST (59 endpoints) + WebSocket (9 event types) + MCP (54 tools) - **Data Collection:** Native Go libraries (Docker SDK, libvirt, /proc, /sys) -- does NOT depend on the GraphQL API - **Stars/Activity:** Active development, comprehensive documentation **Key differentiators from our project:** - Runs as an Unraid plugin directly on the server (no external dependency on GraphQL API) - Collects data directly from /proc, /sys, Docker SDK, and libvirt - 59 REST endpoints vs our 10 MCP tools (76 actions) - 54 MCP tools with Resources and Prompts - Real-time WebSocket event streaming (9 event types, 5-60s intervals) - 41 Prometheus metrics for Grafana dashboards - MQTT publishing for Home Assistant/IoT integration - Confirmation-required destructive operations (`confirm: true` parameter) - Collector management (enable/disable collectors, adjust intervals) - System reboot and shutdown commands **Unique capabilities not available via GraphQL API:** - GPU metrics (utilization, temperature, memory, power draw via nvidia-smi) - UPS metrics via NUT (Network UPS Tools) direct integration - Fan RPM readings from /sys - Motherboard temperature from /sys - SMART disk data (power-on hours, power cycles, read/write bytes, I/O utilization) - Network interface bandwidth (rx/tx bytes, real-time) - Docker container resource usage (CPU %, memory bytes, network I/O) - Unassigned devices monitoring - ZFS pools, datasets, snapshots, ARC stats - Parity check scheduling - Mover settings - Disk thresholds/settings - Service management - Plugin and update management - Flash drive info - Network access URLs (LAN, WAN, mDNS, IPv6) - User script execution - Share configuration modification (POST endpoints) - System settings modification **MCP-specific features we lack:** - MCP Resources (subscribable real-time data: `unraid://system`, `unraid://array`, `unraid://containers`, `unraid://vms`, `unraid://disks`) - MCP Prompts (`analyze_disk_health`, `system_overview`, `troubleshoot_issue`) - Dual MCP transport (HTTP + SSE) - Confirmation-gated destructive operations **REST Endpoints (59 total):** | Category | Endpoints | |----------|-----------| | System & Health | `GET /health`, `GET /system`, `POST /system/reboot`, `POST /system/shutdown` | | Array | `GET /array`, `POST /array/start`, `POST /array/stop` | | Parity | `POST /parity-check/start\|stop\|pause\|resume`, `GET /parity-check/history`, `GET /parity-check/schedule` | | Disks | `GET /disks`, `GET /disks/{id}` | | Shares | `GET /shares`, `GET /shares/{name}/config`, `POST /shares/{name}/config` | | Docker | `GET /docker`, `GET /docker/{id}`, `POST /docker/{id}/start\|stop\|restart\|pause\|unpause` | | VMs | `GET /vm`, `GET /vm/{id}`, `POST /vm/{id}/start\|stop\|restart\|pause\|resume\|hibernate\|force-stop` | | UPS | `GET /ups` | | GPU | `GET /gpu` | | Network | `GET /network`, `GET /network/access-urls`, `GET /network/{interface}/config` | | Collectors | `GET /collectors/status`, `GET /collectors/{name}`, `POST /collectors/{name}/enable\|disable`, `PATCH /collectors/{name}/interval` | | Logs | `GET /logs`, `GET /logs/{filename}` | | Settings | `GET /settings/system\|docker\|vm\|disks\|disk-thresholds\|mover\|services\|network-services`, `POST /settings/system` | | Plugins | `GET /plugins`, `GET /updates` | | Flash | `GET /system/flash` | | Prometheus | `GET /metrics` | | WebSocket | `WS /ws` | --- ### 2. domalab/unraid-api-client - **Repository:** [domalab/unraid-api-client](https://github.com/domalab/unraid-api-client) - **Language:** Python (async, aiohttp) - **Architecture:** Client library for the official Unraid GraphQL API - **API Type:** GraphQL client (same API we use) - **PyPI Package:** `unraid-api` (installable via pip) **Key differentiators from our project:** - Pure client library (not an MCP server), but shows what the GraphQL API can do - Full Pydantic model coverage for all responses (type-safe) - SSL auto-discovery (handles Unraid's "No", "Yes", "Strict" SSL modes) - Redirect handling for myunraid.net remote access - Session injection for Home Assistant integration - Comprehensive exception hierarchy **Methods we should consider adding MCP tools for:** | Method | Our Coverage | Notes | |--------|-------------|-------| | `test_connection()` | Missing | Connection validation | | `get_version()` | Missing | API and OS version info | | `get_server_info()` | Partial | For device registration | | `get_system_metrics()` | Missing | CPU, memory, temperature, power, uptime as typed model | | `typed_get_array()` | Have `get_array_status()` | They have richer Pydantic model | | `typed_get_containers()` | Have `list_docker_containers()` | They have typed models | | `typed_get_vms()` | Have `list_vms()` | They have typed models | | `typed_get_ups_devices()` | **Missing** | UPS battery, power, runtime | | `typed_get_shares()` | Have `get_shares_info()` | Similar | | `get_notification_overview()` | Have it | Same | | `start/stop_container()` | Have `manage_docker_container()` | Same | | `pause/unpause_container()` | **Missing** | Docker pause/unpause | | `update_container()` | **Missing** | Container image update | | `remove_container()` | **Missing** | Container removal | | `start/stop_vm()` | Have `manage_vm()` | Same | | `pause/resume_vm()` | **Missing** | VM pause/resume | | `force_stop_vm()` | **Missing** | Force stop VM | | `reboot_vm()` | **Missing** | VM reboot | | `start/stop_array()` | **Missing** | Array start/stop control | | `start/pause/resume/cancel_parity_check()` | **Missing** | Full parity control | | `spin_up/down_disk()` | **Missing** | Disk spin control | | `get_parity_history()` | **Missing** | Historical parity data | | `typed_get_vars()` | Have `get_unraid_variables()` | Same | | `typed_get_registration()` | Have `get_registration_info()` | Same | | `typed_get_services()` | **Missing** | System services list | | `typed_get_flash()` | **Missing** | Flash drive info | | `typed_get_owner()` | **Missing** | Server owner info | | `typed_get_plugins()` | **Missing** | Installed plugins | | `typed_get_docker_networks()` | **Missing** | Docker network list | | `typed_get_log_files()` | Have `list_available_log_files()` | Same | | `typed_get_cloud()` | **Missing** | Unraid Connect cloud status | | `typed_get_connect()` | Have `get_connect_settings()` | Same | | `typed_get_remote_access()` | **Missing** | Remote access settings | | `get_physical_disks()` | Have `list_physical_disks()` | Same | | `get_array_disks()` | **Missing** | Array disk assignments | --- ### 3. mcp-ssh-sre / unraid-ssh-mcp - **Repository:** [ohare93/mcp-ssh-sre](https://github.com/ohare93/mcp-ssh-sre) - **Language:** TypeScript/Node.js - **Architecture:** MCP server that connects via SSH to run predefined commands - **API Type:** SSH command execution (read-only by design) - **Tools:** 12 tool modules with 79+ actions **Why SSH instead of GraphQL API:** The project's documentation explicitly compares SSH vs API capabilities: | Feature | GraphQL API | SSH | |---------|------------|-----| | Docker container logs | Limited | Full | | SMART disk health data | Limited | Full (smartctl) | | Real-time CPU/load averages | Polling | Direct | | Network bandwidth monitoring | Limited | Full (iftop, nethogs) | | Process monitoring (ps/top) | Not available | Full | | Log file analysis | Basic | Full (grep, awk) | | Security auditing | Not available | Full | **Tool modules and actions:** | Module | Tool Name | Actions | |--------|-----------|---------| | Docker | `docker` | list_containers, inspect, logs, stats, port, env, top, health, logs_aggregate, list_networks, inspect_network, list_volumes, inspect_volume, network_containers | | System | `system` | list_files, read_file, find_files, disk_usage, system_info | | Monitoring | `monitoring` | ps, process_tree, top, iostat, network_connections | | Security | `security` | open_ports, audit_privileges, ssh_connections, cert_expiry | | Log Analysis | `log` | grep_all, error_aggregator, timeline, parse_docker, compare_timerange, restart_history | | Resources | `resource` | dangling, hogs, disk_analyzer, docker_df, zombies, io_profile | | Performance | `performance` | bottleneck, bandwidth, track_metric | | VMs | `vm` | list, info, vnc, logs | | Container Topology | `container_topology` | network_topology, volume_sharing, dependency_graph, port_conflicts, network_test | | Health Diagnostics | `health` | comprehensive, common_issues, threshold_alerts, compare_baseline, diagnostic_report, snapshot | | **Unraid Array** | `unraid` | array_status, smart, temps, shares, share_usage, parity_status, parity_history, sync_status, spin_status, unclean_check, mover_status, mover_log, cache_usage, split_level | | **Unraid Plugins** | `plugin` | list, updates, template, scripts, share_config, disk_assignments, recent_changes | **Unique capabilities we lack entirely:** - Container log retrieval and aggregation - Container environment variable inspection - Container topology analysis (network maps, shared volumes, dependency graphs, port conflicts) - Process monitoring (ps, top, process trees) - Disk I/O monitoring (iostat) - Network connection analysis (ss/netstat) - Security auditing (open ports, privilege audit, SSH connection logs, SSL cert expiry) - Performance bottleneck analysis - Resource waste detection (dangling Docker resources, zombie processes) - Comprehensive health diagnostics with baseline comparison - Mover status and logs - Cache usage analysis - Split level configuration - User script discovery - Docker template inspection - Disk assignment information - Recent config file change detection --- ### 4. PSUnraid - **Repository:** [jlabon2/PSUnraid](https://github.com/jlabon2/PSUnraid) - **Language:** PowerShell - **Architecture:** PowerShell module using GraphQL API - **API Type:** GraphQL (same as ours) - **Status:** Proof of concept, 30+ cmdlets **Cmdlets and operations:** | Category | Cmdlets | |----------|---------| | Connection | `Connect-Unraid`, `Disconnect-Unraid` | | System | `Get-UnraidServer`, `Get-UnraidMetrics`, `Get-UnraidLog`, `Start-UnraidMonitor` | | Docker | `Get-UnraidContainer`, `Start-UnraidContainer`, `Stop-UnraidContainer`, `Restart-UnraidContainer` | | VMs | `Get-UnraidVm`, `Start-UnraidVm`, `Stop-UnraidVm`, `Suspend-UnraidVm`, `Resume-UnraidVm`, `Restart-UnraidVm` | | Array | `Get-UnraidArray`, `Get-UnraidPhysicalDisk`, `Get-UnraidShare`, `Start-UnraidArray`, `Stop-UnraidArray` | | Parity | `Start-UnraidParityCheck`, `Stop-UnraidParityCheck`, `Suspend-UnraidParityCheck`, `Resume-UnraidParityCheck`, `Get-UnraidParityHistory` | | Notifications | `Get-UnraidNotification`, `Set-UnraidNotification`, `Remove-UnraidNotification` | | Other | `Get-UnraidPlugin`, `Get-UnraidUps`, `Restart-UnraidApi` | **Features we lack that PSUnraid has (via same GraphQL API):** - Real-time monitoring dashboard (`Start-UnraidMonitor`) - Notification management (mark as read, delete notifications) - Array start/stop - Parity check full lifecycle (start, stop, pause, resume, history) - UPS monitoring - Plugin listing - API restart capability - VM suspend/resume/restart --- ### 5. ha-unraid (Home Assistant) - **Repository:** [domalab/ha-unraid](https://github.com/domalab/ha-unraid) (ruaan-deysel fork is active) - **Language:** Python - **Architecture:** Home Assistant custom integration - **API Type:** Originally SSH-based (through v2025.06.11), rebuilt for GraphQL API (v2025.12.0+) - **Requires:** Unraid 7.2.0+, GraphQL API v4.21.0+ **Sensors provided:** | Entity Type | Entities | |-------------|----------| | **Sensors** | CPU Usage, CPU Temperature, CPU Power, Memory Usage, Uptime, Array State, Array Usage, Parity Progress, per-Disk Usage, per-Share Usage, Flash Usage, UPS Battery, UPS Load, UPS Runtime, UPS Power, Notifications count | | **Binary Sensors** | Array Started, Parity Check Running, Parity Valid, per-Disk Health, UPS Connected | | **Switches** | Docker Container start/stop, VM start/stop | | **Buttons** | Array Start/Stop, Parity Check Start/Stop, Disk Spin Up/Down | **Features we lack:** - CPU temperature and CPU power consumption monitoring - UPS full monitoring (battery, load, runtime, power, connected status) - Parity progress tracking - Per-disk health binary status - Flash device usage monitoring - Array start/stop buttons - Parity check start/stop - Disk spin up/down - Dynamic entity creation (only creates entities for available services) --- ### 6. chris-mc1/unraid_api (HA integration) - **Repository:** [chris-mc1/unraid_api](https://github.com/chris-mc1/unraid_api) - **Language:** Python - **Architecture:** Lightweight Home Assistant integration using GraphQL API - **API Type:** GraphQL - **Status:** Simpler/lighter alternative to ha-unraid **Entities provided:** - Array state sensor - Array used space percentage - RAM usage percentage - CPU utilization - Per-share free space (optional) - Per-disk state, temperature, spinning status, used space (optional) **Notable:** This is a simpler, lighter-weight integration focused on monitoring only (no control operations). --- ## Feature Matrix ### Legend - **Y** = Supported - **N** = Not supported - **P** = Partial support - **--** = Not applicable ### Monitoring Features | Feature | Our MCP (10 tools, 76 actions) | mgmt-agent (54 MCP tools) | unraid-api-client | mcp-ssh-sre (79 actions) | PSUnraid | ha-unraid | chris-mc1 | |---------|:---:|:---:|:---:|:---:|:---:|:---:|:---:| | System info (hostname, uptime) | Y | Y | Y | Y | Y | Y | N | | CPU usage | Y | Y | Y | Y | Y | Y | Y | | CPU temperature | N | Y | Y | N | N | Y | N | | CPU power consumption | N | Y | N | N | N | Y | N | | Memory usage | Y | Y | Y | Y | Y | Y | Y | | GPU metrics | N | Y | N | N | N | N | N | | Fan RPM | N | Y | N | N | N | N | N | | Motherboard temperature | N | Y | N | N | N | N | N | | UPS monitoring | N | Y | Y | N | Y | Y | N | | Network config | Y | Y | Y | Y | N | N | N | | Network bandwidth | N | Y | N | Y | N | N | N | | Registration/license info | Y | Y | Y | N | N | N | N | | Connect settings | Y | Y | Y | N | N | N | N | | Unraid variables | Y | Y | Y | N | N | N | N | | System services status | N | Y | Y | N | N | N | N | | Flash drive info | N | Y | Y | N | N | Y | N | | Owner info | N | N | Y | N | N | N | N | | Installed plugins | N | Y | Y | Y | Y | N | N | | Available updates | N | Y | N | Y | N | N | N | ### Storage Features | Feature | Our MCP | mgmt-agent | unraid-api-client | mcp-ssh-sre | PSUnraid | ha-unraid | chris-mc1 | |---------|:---:|:---:|:---:|:---:|:---:|:---:|:---:| | Array status | Y | Y | Y | Y | Y | Y | Y | | Array start/stop | N | Y | Y | N | Y | Y | N | | Physical disk listing | Y | Y | Y | N | Y | N | N | | Disk details | Y | Y | Y | Y | Y | Y | Y | | Disk SMART data | N | Y | N | Y | N | P | N | | Disk spin up/down | N | Y | Y | Y | N | Y | N | | Disk temperatures | P | Y | Y | Y | N | Y | Y | | Disk I/O stats | N | Y | N | Y | N | N | N | | Shares info | Y | Y | Y | Y | Y | Y | Y | | Share configuration | N | Y | N | Y | N | N | N | | Parity check control | N | Y | Y | N | Y | Y | N | | Parity check history | N | Y | Y | Y | Y | N | N | | Parity progress | N | Y | Y | Y | Y | Y | N | | ZFS pools/datasets/snapshots | N | Y | N | N | N | N | N | | ZFS ARC stats | N | Y | N | N | N | N | N | | Unassigned devices | N | Y | N | N | N | N | N | | Mover status/logs | N | N | N | Y | N | N | N | | Cache usage | N | N | N | Y | N | N | N | ### Docker Features | Feature | Our MCP | mgmt-agent | unraid-api-client | mcp-ssh-sre | PSUnraid | ha-unraid | chris-mc1 | |---------|:---:|:---:|:---:|:---:|:---:|:---:|:---:| | List containers | Y | Y | Y | Y | Y | Y | N | | Container details | Y | Y | Y | Y | N | P | N | | Start/stop/restart | Y | Y | Y | N | Y | Y | N | | Pause/unpause | N | Y | Y | N | N | N | N | | Container resource usage | N | Y | Y | Y | N | N | N | | Container logs | N | N | N | Y | N | N | N | | Container env vars | N | N | N | Y | N | N | N | | Container network topology | N | N | N | Y | N | N | N | | Container port inspection | N | N | N | Y | N | N | N | | Docker networks | N | Y | Y | Y | N | N | N | | Docker volumes | N | N | N | Y | N | N | N | | Container update | N | N | Y | N | N | N | N | | Container removal | N | N | Y | N | N | N | N | | Docker settings | N | Y | N | N | N | N | N | ### VM Features | Feature | Our MCP | mgmt-agent | unraid-api-client | mcp-ssh-sre | PSUnraid | ha-unraid | chris-mc1 | |---------|:---:|:---:|:---:|:---:|:---:|:---:|:---:| | List VMs | Y | Y | Y | Y | Y | Y | N | | VM details | Y | Y | Y | Y | N | P | N | | Start/stop | Y | Y | Y | N | Y | Y | N | | Restart | Y | Y | N | N | Y | N | N | | Pause/resume | N | Y | Y | N | Y | N | N | | Hibernate | N | Y | N | N | N | N | N | | Force stop | N | Y | Y | N | Y | N | N | | Reboot VM | N | N | Y | N | N | N | N | | VNC info | N | N | N | Y | N | N | N | | VM libvirt logs | N | N | N | Y | N | N | N | | VM settings | N | Y | N | N | N | N | N | ### Cloud Storage (RClone) Features | Feature | Our MCP | mgmt-agent | unraid-api-client | mcp-ssh-sre | PSUnraid | ha-unraid | chris-mc1 | |---------|:---:|:---:|:---:|:---:|:---:|:---:|:---:| | List remotes | Y | N | N | N | N | N | N | | Get config form | Y | N | N | N | N | N | N | | Create remote | Y | N | N | N | N | N | N | | Delete remote | Y | N | N | N | N | N | N | > **Note:** RClone management is unique to our project among these competitors. ### Notification Features | Feature | Our MCP | mgmt-agent | unraid-api-client | mcp-ssh-sre | PSUnraid | ha-unraid | chris-mc1 | |---------|:---:|:---:|:---:|:---:|:---:|:---:|:---:| | Notification overview | Y | Y | Y | N | N | Y | N | | List notifications | Y | Y | Y | Y | Y | N | N | | Mark as read | N | N | N | N | Y | N | N | | Delete notifications | N | N | N | N | Y | N | N | ### Logs & Diagnostics | Feature | Our MCP | mgmt-agent | unraid-api-client | mcp-ssh-sre | PSUnraid | ha-unraid | chris-mc1 | |---------|:---:|:---:|:---:|:---:|:---:|:---:|:---:| | List log files | Y | Y | Y | N | N | N | N | | Get log contents | Y | Y | Y | Y | Y | N | N | | Log search/grep | N | N | N | Y | N | N | N | | Error aggregation | N | N | N | Y | N | N | N | | Syslog access | N | Y | N | Y | Y | N | N | | Docker daemon log | N | Y | N | Y | N | N | N | | Health check | Y | Y | N | Y | N | N | N | | Subscription diagnostics | Y | N | N | N | N | N | N | ### Integration & Protocol Features | Feature | Our MCP | mgmt-agent | unraid-api-client | mcp-ssh-sre | PSUnraid | ha-unraid | chris-mc1 | |---------|:---:|:---:|:---:|:---:|:---:|:---:|:---:| | MCP tools | Y (10 tools, 76 actions) | Y (54) | N | Y (79 actions) | N | N | N | | MCP Resources | N | Y (5) | N | N | N | N | N | | MCP Prompts | N | Y (3) | N | N | N | N | N | | REST API | N | Y (59) | N | N | N | N | N | | WebSocket streaming | N | Y (9 events) | N | N | N | N | N | | Prometheus metrics | N | Y (41) | N | N | N | N | N | | MQTT publishing | N | Y | N | N | N | N | N | | SSE transport | Y | Y | N | Y | N | N | N | | Stdio transport | Y | N | N | Y | N | N | N | | Streamable HTTP | Y | Y | N | Y | N | N | N | | Pydantic models | N | N | Y | N | N | N | N | | Safety confirmations | N | Y | N | N | N | N | N | ### Security & Operational Features | Feature | Our MCP | mgmt-agent | mcp-ssh-sre | PSUnraid | |---------|:---:|:---:|:---:|:---:| | Open port scanning | N | N | Y | N | | SSH login monitoring | N | N | Y | N | | Container privilege audit | N | N | Y | N | | SSL certificate expiry | N | N | Y | N | | Process monitoring | N | N | Y | N | | Zombie process detection | N | N | Y | N | | Performance bottleneck analysis | N | N | Y | N | | System reboot | N | Y | N | N | | System shutdown | N | Y | N | N | | User script execution | N | Y | Y | N | --- ## Gap Analysis ### Priority 1: High-Value Features Available via GraphQL API These features are available through the same GraphQL API we already use and should be straightforward to implement: 1. **Array start/stop control** -- Both `domalab/unraid-api-client` and `PSUnraid` implement this via GraphQL mutations. This is a fundamental control operation that every competitor supports. 2. **Parity check lifecycle** (start, stop, pause, resume, history) -- Available via GraphQL mutations. Critical for array management. 3. **Disk spin up/down** -- Available via GraphQL mutations. Important for power management and noise control. 4. **UPS monitoring** -- Available via GraphQL query. Present in `unraid-api-client`, `PSUnraid`, and `ha-unraid`. Data includes battery level, load, runtime, power state. 5. **System services list** -- Available via GraphQL query (`services`). Shows Docker service, VM manager status, etc. 6. **Flash drive info** -- Available via GraphQL query (`flash`). Boot device monitoring. 7. **Installed plugins list** -- Available via GraphQL query (`plugins`). Useful for understanding server configuration. 8. **Docker networks** -- Available via GraphQL query. Listed in `unraid-api-client`. 9. **Parity history** -- Available via GraphQL query. Historical parity check data. 10. **VM pause/resume and force stop** -- Available via GraphQL mutations. Completing our VM control capabilities. 11. **Docker pause/unpause** -- Available via GraphQL mutations. Completing our Docker control capabilities. 12. **Cloud/remote access status** -- Available via GraphQL queries. Shows Unraid Connect status, remote access configuration. 13. **Notification management** -- Mark as read, delete. `PSUnraid` implements this via GraphQL. 14. **API/OS version info** -- Simple query that helps with compatibility checks. ### Priority 2: High-Value Features Requiring Non-GraphQL Data Sources These would require SSH access or other system-level access that our GraphQL-only architecture cannot provide: 1. **Container logs** -- Not available via GraphQL. SSH-based solutions (mcp-ssh-sre) can retrieve full container logs via `docker logs`. 2. **SMART disk data** -- Limited via GraphQL. Full SMART data (power-on hours, error counts, reallocated sectors) requires `smartctl` access. 3. **GPU metrics** -- Not available via GraphQL. Requires nvidia-smi or similar. 4. **Process monitoring** -- Not available via GraphQL. Requires `ps`/`top` access. 5. **Network bandwidth** -- Not in GraphQL. Requires direct system access. 6. **Container resource usage** (CPU%, memory) -- Not available through the current GraphQL API at a per-container level in real-time. 7. **Log search/grep** -- While we can get log contents, we cannot search across logs. 8. **Security auditing** -- Not available via GraphQL. ### Priority 3: Architectural Improvements 1. **MCP Resources** -- Add subscribable data streams (system, array, containers, VMs, disks) for real-time AI agent monitoring. 2. **MCP Prompts** -- Add guided interaction templates (disk health analysis, system overview, troubleshooting). 3. **Confirmation for destructive operations** -- Add a `confirm` parameter for array stop, system reboot, container removal, etc. 4. **Pydantic response models** -- Type-safe response parsing like `domalab/unraid-api-client`. 5. **Connection validation tool** -- Simple tool to verify API connectivity and version compatibility. --- ## Recommended Priorities ### Phase 1: Low-Hanging Fruit (GraphQL mutations/queries we already have access to) **Estimated effort: Small -- these are straightforward GraphQL queries/mutations** | New Tool | Priority | Notes | |----------|----------|-------| | `start_array()` / `stop_array()` | Critical | Every competitor has this | | `start_parity_check()` / `stop_parity_check()` | Critical | Full parity lifecycle | | `pause_parity_check()` / `resume_parity_check()` | Critical | Full parity lifecycle | | `get_parity_history()` | High | Historical data | | `spin_up_disk()` / `spin_down_disk()` | High | Disk power management | | `get_ups_status()` | High | UPS monitoring | | `get_services_status()` | Medium | System services | | `get_flash_info()` | Medium | Flash drive info | | `get_plugins()` | Medium | Plugin management | | `get_docker_networks()` | Medium | Docker networking | | `pause_docker_container()` / `unpause_docker_container()` | Medium | Docker control | | `pause_vm()` / `resume_vm()` / `force_stop_vm()` | Medium | VM control | | `get_cloud_status()` / `get_remote_access()` | Low | Connect info | | `get_version()` | Low | API version | | `manage_notifications()` | Low | Mark read/delete | ### Phase 2: MCP Protocol Enhancements | Enhancement | Priority | Notes | |-------------|----------|-------| | MCP Resources (5 streams) | High | Real-time data for AI agents | | MCP Prompts (3 templates) | Medium | Guided interactions | | Confirmation parameter | High | Safety for destructive ops | | Connection validation tool | Medium | Health/compatibility check | ### Phase 3: Advanced Features (may require SSH) | Feature | Priority | Notes | |---------|----------|-------| | Container log retrieval | High | Most-requested SSH-only feature | | SMART disk health data | High | Disk failure prediction | | GPU monitoring | Medium | For GPU passthrough users | | Performance/resource monitoring | Medium | Bottleneck analysis | | Security auditing | Low | Port scan, login audit | --- ## Sources - [ruaan-deysel/unraid-management-agent](https://github.com/ruaan-deysel/unraid-management-agent) -- Go-based Unraid plugin with REST API, WebSocket, MCP, Prometheus, and MQTT - [domalab/unraid-api-client](https://github.com/domalab/unraid-api-client) -- Async Python client for Unraid GraphQL API (PyPI: `unraid-api`) - [ohare93/mcp-ssh-sre](https://github.com/ohare93/mcp-ssh-sre) -- SSH-based MCP server for read-only server monitoring - [jlabon2/PSUnraid](https://github.com/jlabon2/PSUnraid) -- PowerShell module for Unraid 7.x management via GraphQL API - [domalab/ha-unraid](https://github.com/domalab/ha-unraid) (ruaan-deysel fork) -- Home Assistant integration via GraphQL API - [chris-mc1/unraid_api](https://github.com/chris-mc1/unraid_api) -- Lightweight Home Assistant integration for Unraid - [nickbeddows-ctrl/unraid-ssh-mcp](https://github.com/nickbeddows-ctrl/unraid-ssh-mcp) -- Guardrailed MCP server for Unraid management via SSH - [MCP SSH Unraid on LobeHub](https://lobehub.com/mcp/ohare93-unraid-ssh-mcp) - [MCP SSH SRE on Glama](https://glama.ai/mcp/servers/@ohare93/mcp-ssh-sre) - [Unraid Integration for Home Assistant (domalab docs)](https://domalab.github.io/ha-unraid/) - [Home Assistant Unraid Integration forum thread](https://community.home-assistant.io/t/unraid-integration/785003)