Files
unraid-mcp/MISSING_API_FEATURES.md
Jacob Magar f355511fe6 Migrate to uv and FastMCP architecture with comprehensive tooling
- Replace pip/requirements.txt with uv and pyproject.toml
- Restructure as single-file MCP server using FastMCP
- Add comprehensive Unraid management tools (containers, VMs, storage, logs)
- Implement multiple transport support (streamable-http, SSE, stdio)
- Add robust error handling and timeout management
- Include project documentation and API feature tracking
- Remove outdated cline documentation structure

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-09 07:34:00 -04:00

7.9 KiB

Missing Unraid API Features

This document details the comprehensive analysis of Unraid API capabilities that are NOT currently implemented in our MCP server, based on investigation of the official Unraid API repository (https://github.com/unraid/api).

Current Implementation Status

What We HAVE Implemented

  • Basic system info, array status, physical disks
  • Docker container listing/management/details
  • VM listing/management/details
  • Basic notification overview/listing
  • Log file listing/content retrieval
  • User shares information
  • Network configuration, registration, and Connect settings
  • Unraid variables and system health check

What We're MISSING


1. GraphQL Mutations (Server Control Operations)

Array Management Mutations

  • array.setState(input: ArrayStateInput) - Start/stop the Unraid array
  • array.addDiskToArray(input: ArrayDiskInput) - Add disk to array
  • array.removeDiskFromArray(input: ArrayDiskInput) - Remove disk from array (requires stopped array)

Parity Check Mutations

  • parityCheck.start(correct: boolean) - Start parity check with optional correction
  • parityCheck.pause() - Pause ongoing parity check
  • parityCheck.resume() - Resume paused parity check

Enhanced VM Management Mutations

  • vm.pause(id: PrefixedID) - Pause running VM
  • vm.resume(id: PrefixedID) - Resume paused VM
  • (We have start/stop, missing pause/resume)

RClone Remote Management

  • rclone.createRCloneRemote(input: CreateRCloneRemoteInput) - Create new RClone remote
  • rclone.deleteRCloneRemote(input: DeleteRCloneRemoteInput) - Delete RClone remote

Settings & Configuration Management

  • updateSettings(input: JSON!) - Update server settings with validation
    • api namespace: sandbox (boolean), ssoSubIds (string[]), extraOrigins (string[])
    • connect namespace: accessType (string), port (number|null), forwardType (string)
    • Plugin namespaces: Dynamic settings from installed plugins
  • setAdditionalAllowedOrigins(input: AllowedOriginInput!) - Configure API allowed origins
  • setupRemoteAccess(input: SetupRemoteAccessInput!) - Configure remote access settings

Unraid Connect Authentication

  • connectSignIn(input: ConnectSignInInput!) - Sign in to Unraid Connect
  • connectSignOut() - Sign out from Unraid Connect

Advanced Notification Management

  • archiveNotification(id: PrefixedID!) - Archive specific notification
  • archiveAllNotifications() - Archive all unread notifications
  • deleteNotification(id: PrefixedID!, type: NotificationType!) - Delete specific notification
  • deleteArchivedNotifications() - Delete all archived notifications
  • recalculateOverview() - Recompute notification overview counts

API Key Management

  • apiKey.create(input: CreateApiKeyInput!) - Create new API key with roles/permissions
  • apiKey.delete(input: DeleteApiKeyInput!) - Delete existing API key

2. GraphQL Queries (Information Retrieval)

Enhanced System Information

  • cloud - Cloud connection status, API key validity, allowed origins
  • servers - List of registered multi-server setups via Unraid Connect
    • Provides centralized management of multiple Unraid servers through cloud connectivity
    • Returns: server identification, system info, status, configuration data
    • Enables "one-stop shop" server management, monitoring, and maintenance
  • publicTheme - Current theme settings (colors, branding, etc.)
  • extraAllowedOrigins - Additional configured allowed origins
  • remoteAccess - Remote access configuration details
  • publicPartnerInfo - Partner/OEM branding information
  • customization.activationCode - Activation code and customization details
  • apiKeyPossibleRoles and apiKeyPossiblePermissions - Available API key roles and permissions
  • settings.unified - Unified settings with JSON schema validation

RClone Configuration

  • rclone.configForm(formOptions: RCloneConfigFormInput) - Get RClone configuration form schema
  • rclone.remotes - List all configured RClone remotes with parameters

Enhanced Log Management

  • Better log file metadata (size, modification timestamps) - we have basic implementation but missing some fields

3. GraphQL Subscriptions (Real-time Updates)

We have ZERO subscription capabilities implemented. All of these provide real-time updates:

Core Infrastructure Monitoring

  • arraySubscription - Real-time array status changes (critical for storage monitoring)
  • infoSubscription - System information updates (CPU, memory, uptime changes)
  • parityHistorySubscription - Parity check progress and status updates

Application & Service Monitoring

  • logFile(path: String!) - Real-time log file content streaming
  • notificationAdded - New notification events
  • notificationsOverview - Live notification count changes

Advanced System Monitoring

  • displaySubscription - Display-related information updates
  • ownerSubscription - Owner profile/status changes
  • registrationSubscription - Registration status changes (API key updates, etc.)
  • serversSubscription - Multi-server status updates

Events & General Updates

  • events - General system events including client connections

4. Priority Implementation Recommendations

HIGH PRIORITY (Critical for Infrastructure Management)

  1. Array Control Mutations - setState, addDisk, removeDisk
  2. Parity Operations - start, pause, resume parity checks
  3. Real-time Subscriptions - arraySubscription, infoSubscription, parityHistorySubscription
  4. Enhanced Notification Management - Archive, delete operations

MEDIUM PRIORITY (Valuable for Administration)

  1. RClone Management - Create, delete, list remotes
  2. Settings Management - Update server configurations
  3. API Key Management - Create, delete keys
  4. Real-time Log Streaming - logFile subscription

LOW PRIORITY (Nice to Have)

  1. Connect Authentication - Sign in/out operations
  2. Enhanced System Queries - Cloud status, themes, partner info
  3. Advanced VM Operations - Pause/resume VMs
  4. Multi-server Support - Server listing and management

5. Implementation Strategy

Phase 1: Core Operations (Highest Value)

  • Implement array control mutations
  • Add parity check operations
  • Create subscription-to-resource framework for real-time monitoring

Phase 2: Enhanced Management

  • RClone remote management
  • Advanced notification operations
  • Settings management

Phase 3: Advanced Features

  • API key management
  • Connect authentication
  • Multi-server capabilities

6. Technical Notes

GraphQL Schema Migration Status

According to the Unraid API repository:

  • Docker Resolver: Still needs migration to code-first approach
  • Disks Resolver: Still needs migration to code-first approach
  • API Key Operations: Mentioned in docs but GraphQL mutations not fully defined in context

Authentication Requirements

Most mutations require:

  • Valid API key in x-api-key header
  • Appropriate role-based permissions
  • Some operations may require admin role

Real-time Capabilities

The Unraid API uses:

  • GraphQL subscriptions over WebSocket
  • PubSub event system for real-time updates
  • Domain event bus architecture

7. Impact Assessment

Implementing these missing features would:

  • Dramatically increase our MCP server's capabilities
  • Enable full remote management of Unraid servers
  • Provide real-time monitoring through MCP resources
  • Support automation and orchestration workflows
  • Match feature parity with the official Unraid API

The subscription-to-resource approach would be particularly powerful, making our MCP server one of the most capable infrastructure monitoring tools available in the MCP ecosystem.