Provides tools for monitoring Docker containers and networks on an Unraid server, including listing containers and accessing detailed information about specific containers.
Interfaces with Unraid's GraphQL API to facilitate all server interactions, handling authentication and providing consistent error reporting.
Allows querying information about the Plex media server container running on Unraid, mentioned as an example use case for container-specific details.
Enables interaction with an Unraid server through its GraphQL API, offering system monitoring, array status, Docker container management, VM management, disk information, notification management, share management, user management, and plugin monitoring capabilities.
🚀 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
- Installation
- Configuration
- Available Tools & Resources
- Development
- Architecture
- Troubleshooting
🚀 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
2. Configure Environment
3. Deploy with Docker (Recommended)
OR 3. Run for Development
📦 Installation
🐳 Docker Deployment (Recommended)
The easiest way to run the Unraid MCP Server is with Docker:
Manual Docker Build
🔧 Development Installation
For development and testing:
⚙️ Configuration
Environment Variables
Create .env
file in the project root:
Transport Options
Transport | Description | Use Case |
---|---|---|
streamable-http | HTTP-based (recommended) | Most compatible, best performance |
sse | Server-Sent Events (deprecated) | Legacy support only |
stdio | Standard I/O | Direct integration scenarios |
🛠️ Available Tools & Resources
System Information & Status
get_system_info()
- Comprehensive system, OS, CPU, memory, hardware infoget_array_status()
- Storage array status, capacity, and disk detailsget_unraid_variables()
- System variables and settingsget_network_config()
- Network configuration and access URLsget_registration_info()
- Unraid registration detailsget_connect_settings()
- Unraid Connect configuration
Docker Container Management
list_docker_containers()
- List all containers with caching optionsmanage_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 statesmanage_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 informationlist_physical_disks()
- Physical disk discoveryget_disk_details(disk_id)
- SMART data and detailed disk info
Monitoring & Diagnostics
health_check()
- Comprehensive system health assessmentget_notifications_overview()
- Notification counts by severitylist_notifications(type, offset, limit)
- Filtered notification listinglist_available_log_files()
- Available system logsget_logs(path, tail_lines)
- Log file content retrieval
Cloud Storage (RClone)
list_rclone_remotes()
- List configured remotesget_rclone_config_form(provider)
- Configuration schemascreate_rclone_remote(name, type, config)
- Create new remotedelete_rclone_remote(name)
- Remove existing remote
Real-time Subscriptions & Resources
test_subscription_query(query)
- Test GraphQL subscriptionsdiagnose_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
Code Quality Commands
Development Workflow
🏗️ 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
Component | Purpose |
---|---|
FastMCP Server | MCP protocol implementation and tool registration |
GraphQL Client | Async HTTP client with timeout management |
Subscription Manager | WebSocket connections for real-time data |
Tool Modules | Domain-specific business logic (Docker, VMs, etc.) |
Configuration System | Environment loading and validation |
Logging Framework | Structured logging with file rotation |
🐛 Troubleshooting
Common Issues
🔥 Port Already in Use
🔧 Connection Refused
📝 Import Errors
🔍 Debug Mode
Health Check
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
🤝 Contributing
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature
- Run tests:
uv run pytest
- Commit changes:
git commit -m 'Add amazing feature'
- Push to branch:
git push origin feature/amazing-feature
- 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
This server cannot be installed
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.
- Disclaimer
- Features
- Prerequisites
- Installation
- Unraid API Setup
- Usage
- Server Architecture
- Available Resources
- Available Tools
- Integration with Claude
- Example Queries
- Troubleshooting
- Contributing
- License
- References
Related Resources
Related MCP Servers
- AsecurityAlicenseAqualityProvides 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 -1817661MIT License
- -securityAlicense-qualityA 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
- -securityAlicense-qualityA 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 -87MIT License
- -securityFlicense-qualityThis 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