Skip to main content
Glama

Unraid MCP Server

🚀 Unraid MCP Server

A powerful MCP (Model Context Protocol) server that provides comprehensive tools to interact with an Unraid server's GraphQL API.

✨ Features

  • 🔧 26 Tools: Complete Unraid management through MCP protocol
  • 🏗️ Modular Architecture: Clean, maintainable, and extensible codebase
  • High Performance: Async/concurrent operations with optimized timeouts
  • 🔄 Real-time Data: WebSocket subscriptions for live log streaming
  • 📊 Health Monitoring: Comprehensive system diagnostics and status
  • 🐳 Docker Ready: Full containerization support with Docker Compose
  • 🔒 Secure: Proper SSL/TLS configuration and API key management
  • 📝 Rich Logging: Structured logging with rotation and multiple levels

📋 Table of Contents


🚀 Quick Start

Prerequisites

  • Docker and Docker Compose (recommended)
  • OR Python 3.10+ with uv for development
  • Unraid server with GraphQL API enabled

1. Clone Repository

git clone https://github.com/jmagar/unraid-mcp cd unraid-mcp

2. Configure Environment

cp .env.example .env # Edit .env with your Unraid API details
# Start with Docker Compose docker compose up -d # View logs docker compose logs -f unraid-mcp

OR 3. Run for Development

# Install dependencies uv sync # Run development server ./dev.sh

📦 Installation

The easiest way to run the Unraid MCP Server is with Docker:

# Clone repository git clone https://github.com/jmagar/unraid-mcp cd unraid-mcp # Set required environment variables export UNRAID_API_URL="http://your-unraid-server/graphql" export UNRAID_API_KEY="your_api_key_here" # Deploy with Docker Compose docker compose up -d # View logs docker compose logs -f unraid-mcp
Manual Docker Build
# Build and run manually docker build -t unraid-mcp-server . docker run -d --name unraid-mcp \ --restart unless-stopped \ -p 6970:6970 \ -e UNRAID_API_URL="http://your-unraid-server/graphql" \ -e UNRAID_API_KEY="your_api_key_here" \ unraid-mcp-server

🔧 Development Installation

For development and testing:

# Clone repository git clone https://github.com/jmagar/unraid-mcp cd unraid-mcp # Install dependencies with uv uv sync # Install development dependencies uv sync --group dev # Configure environment cp .env.example .env # Edit .env with your settings # Run development server ./dev.sh

⚙️ Configuration

Environment Variables

Create .env file in the project root:

# Core API Configuration (Required) UNRAID_API_URL=https://your-unraid-server-url/graphql UNRAID_API_KEY=your_unraid_api_key # MCP Server Settings UNRAID_MCP_TRANSPORT=streamable-http # streamable-http (recommended), sse (deprecated), stdio UNRAID_MCP_HOST=0.0.0.0 UNRAID_MCP_PORT=6970 # Logging Configuration UNRAID_MCP_LOG_LEVEL=INFO # DEBUG, INFO, WARNING, ERROR UNRAID_MCP_LOG_FILE=unraid-mcp.log # SSL/TLS Configuration UNRAID_VERIFY_SSL=true # true, false, or path to CA bundle # Optional: Log Stream Configuration # UNRAID_AUTOSTART_LOG_PATH=/var/log/syslog # Path for log streaming resource

Transport Options

TransportDescriptionUse Case
streamable-httpHTTP-based (recommended)Most compatible, best performance
sseServer-Sent Events (deprecated)Legacy support only
stdioStandard I/ODirect integration scenarios

🛠️ Available Tools & Resources

System Information & Status

  • get_system_info() - Comprehensive system, OS, CPU, memory, hardware info
  • get_array_status() - Storage array status, capacity, and disk details
  • get_unraid_variables() - System variables and settings
  • get_network_config() - Network configuration and access URLs
  • get_registration_info() - Unraid registration details
  • get_connect_settings() - Unraid Connect configuration

Docker Container Management

  • list_docker_containers() - List all containers with caching options
  • manage_docker_container(id, action) - Start/stop containers (idempotent)
  • get_docker_container_details(identifier) - Detailed container information

Virtual Machine Management

  • list_vms() - List all VMs and their states
  • manage_vm(id, action) - VM lifecycle (start/stop/pause/resume/reboot)
  • get_vm_details(identifier) - Detailed VM information

Storage & File Systems

  • get_shares_info() - User shares information
  • list_physical_disks() - Physical disk discovery
  • get_disk_details(disk_id) - SMART data and detailed disk info

Monitoring & Diagnostics

  • health_check() - Comprehensive system health assessment
  • get_notifications_overview() - Notification counts by severity
  • list_notifications(type, offset, limit) - Filtered notification listing
  • list_available_log_files() - Available system logs
  • get_logs(path, tail_lines) - Log file content retrieval

Cloud Storage (RClone)

  • list_rclone_remotes() - List configured remotes
  • get_rclone_config_form(provider) - Configuration schemas
  • create_rclone_remote(name, type, config) - Create new remote
  • delete_rclone_remote(name) - Remove existing remote

Real-time Subscriptions & Resources

  • test_subscription_query(query) - Test GraphQL subscriptions
  • diagnose_subscriptions() - Subscription system diagnostics

MCP Resources (Real-time Data)

  • unraid://logs/stream - Live log streaming from /var/log/syslog with WebSocket subscriptions

Note: MCP Resources provide real-time data streams that can be accessed via MCP clients. The log stream resource automatically connects to your Unraid system logs and provides live updates.


🔧 Development

Project Structure

unraid-mcp/ ├── unraid_mcp/ # Main package │ ├── main.py # Entry point │ ├── config/ # Configuration management │ │ ├── settings.py # Environment & settings │ │ └── logging.py # Logging setup │ ├── core/ # Core infrastructure │ │ ├── client.py # GraphQL client │ │ ├── exceptions.py # Custom exceptions │ │ └── types.py # Shared data types │ ├── subscriptions/ # Real-time subscriptions │ │ ├── manager.py # WebSocket management │ │ ├── resources.py # MCP resources │ │ └── diagnostics.py # Diagnostic tools │ ├── tools/ # MCP tool categories │ │ ├── docker.py # Container management │ │ ├── system.py # System information │ │ ├── storage.py # Storage & monitoring │ │ ├── health.py # Health checks │ │ ├── virtualization.py # VM management │ │ └── rclone.py # Cloud storage │ └── server.py # FastMCP server setup ├── logs/ # Log files (auto-created) ├── dev.sh # Development script └── docker-compose.yml # Docker Compose deployment

Code Quality Commands

# Format code uv run black unraid_mcp/ # Lint code uv run ruff check unraid_mcp/ # Type checking uv run mypy unraid_mcp/ # Run tests uv run pytest

Development Workflow

# Start development server (kills existing processes safely) ./dev.sh # Stop server only ./dev.sh --kill

🏗️ Architecture

Core Principles

  • Modular Design: Separate concerns across focused modules
  • Async First: All operations are non-blocking and concurrent-safe
  • Error Resilience: Comprehensive error handling with graceful degradation
  • Configuration Driven: Environment-based configuration with validation
  • Observability: Structured logging and health monitoring

Key Components

ComponentPurpose
FastMCP ServerMCP protocol implementation and tool registration
GraphQL ClientAsync HTTP client with timeout management
Subscription ManagerWebSocket connections for real-time data
Tool ModulesDomain-specific business logic (Docker, VMs, etc.)
Configuration SystemEnvironment loading and validation
Logging FrameworkStructured logging with file rotation

🐛 Troubleshooting

Common Issues

🔥 Port Already in Use

./dev.sh # Automatically kills existing processes

🔧 Connection Refused

# Check Unraid API configuration curl -k "${UNRAID_API_URL}" -H "X-API-Key: ${UNRAID_API_KEY}"

📝 Import Errors

# Reinstall dependencies uv sync --reinstall

🔍 Debug Mode

# Enable debug logging export UNRAID_MCP_LOG_LEVEL=DEBUG uv run unraid-mcp-server

Health Check

# Use the built-in health check tool via MCP client # or check logs at: logs/unraid-mcp.log

📄 License

This project is licensed under the MIT License - see the LICENSE file for details.


🤝 Contributing

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/amazing-feature
  3. Run tests: uv run pytest
  4. Commit changes: git commit -m 'Add amazing feature'
  5. Push to branch: git push origin feature/amazing-feature
  6. Open a Pull Request

📞 Support

  • 📚 Documentation: Check inline code documentation
  • 🐛 Issues: GitHub Issues
  • 💬 Discussions: Use GitHub Discussions for questions

Built with ❤️ for the Unraid community

-
security - not tested
F
license - not found
-
quality - not tested

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

A Python-based server that enables AI assistants to interact with an Unraid server through the official Unraid GraphQL API, providing read-only access to system information, Docker containers, VMs, storage, and more.

  1. Disclaimer
    1. Features
      1. Prerequisites
        1. Installation
          1. Installing via Smithery
          2. Manual Installation
        2. Unraid API Setup
          1. Troubleshooting
        3. Usage
          1. Running the MCP Server
        4. Server Architecture
          1. Available Resources
            1. Available Tools
              1. System Management
              2. Array Management
              3. Docker Management
              4. VM Management
              5. Notification Management
              6. Share Management
              7. Disk Management
              8. User Management
              9. API Key Management
            2. Integration with Claude
              1. Example Queries
                1. Troubleshooting
                  1. Contributing
                    1. License
                      1. References

                        Related MCP Servers

                        • A
                          security
                          A
                          license
                          A
                          quality
                          Provides comprehensive access to Roam Research's API functionality. This server enables AI assistants like Claude to interact with your Roam Research graph through a standardized interface.
                          Last updated -
                          18
                          176
                          61
                          MIT License
                          • Apple
                        • -
                          security
                          A
                          license
                          -
                          quality
                          A server implementation that provides a unified interface for OpenAI services, Git repository analysis, and local filesystem operations through REST API endpoints.
                          Last updated -
                          GPL 3.0
                          • Linux
                          • Apple
                        • -
                          security
                          A
                          license
                          -
                          quality
                          A server that enables AI assistants to understand and interact with Unity projects in real-time, providing access to scene hierarchy, project settings, and the ability to execute code directly in the Unity Editor.
                          Last updated -
                          87
                          MIT License
                          • Linux
                          • Apple
                        • -
                          security
                          F
                          license
                          -
                          quality
                          This server enables AI assistants (CLINE, Cursor, Windsurf, Claude Desktop) to share a common knowledge base through Retrieval Augmented Generation (RAG), providing consistent information access across multiple tools.
                          Last updated -
                          4
                          • Apple

                        View all related MCP servers

                        MCP directory API

                        We provide all the information about MCP servers via our MCP API.

                        curl -X GET 'https://glama.ai/api/mcp/v1/servers/jmagar/unraid-mcp'

                        If you have feedback or need assistance with the MCP directory API, please join our Discord server