一个强大的 MCP(模型上下文协议)服务器,提供了全面的工具来与 Unraid 服务器的 GraphQL API 进行交互。
git clone https://github.com/jmagar/unraid-mcp
cd unraid-mcp
cp .env.example .env
# 编辑 .env 文件,填写你的 Unraid API 详情
# 使用 Docker Compose 启动
docker compose up -d
# 查看日志
docker compose logs -f unraid-mcp
# 安装依赖
uv sync
# 运行开发服务器
./dev.sh
最简单的方式是使用 Docker 来运行 Unraid MCP 服务器:
# 克隆仓库
git clone https://github.com/jmagar/unraid-mcp
cd unraid-mcp
# 设置所需的环境变量
export UNRAID_API_URL="http://your-unraid-server/graphql"
export UNRAID_API_KEY="your_api_key_here"
# 使用 Docker Compose 部署
docker compose up -d
# 查看日志
docker compose logs -f unraid-mcp
# 手动构建和运行
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
为了开发和测试:
# 克隆仓库
git clone https://github.com/jmagar/unraid-mcp
cd unraid-mcp
# 使用 uv 安装依赖
uv sync
# 安装开发依赖
uv sync --group dev
# 配置环境
cp .env.example .env
# 编辑 .env 文件,填写你的设置
# 运行开发服务器
./dev.sh
在项目根目录创建 .env 文件:
# 核心 API 配置(必需)
UNRAID_API_URL=https://your-unraid-server-url/graphql
UNRAID_API_KEY=your_unraid_api_key
# MCP 服务器设置
UNRAID_MCP_TRANSPORT=streamable-http # streamable-http(推荐),sse(已弃用),stdio
UNRAID_MCP_HOST=0.0.0.0
UNRAID_MCP_PORT=6970
# 日志配置
UNRAID_MCP_LOG_LEVEL=INFO # DEBUG, INFO, WARNING, ERROR
UNRAID_MCP_LOG_FILE=unraid-mcp.log
# SSL/TLS 配置
UNRAID_VERIFY_SSL=true # true, false 或 CA 捆绑包路径
# 可选:日志流配置
# UNRAID_AUTOSTART_LOG_PATH=/var/log/syslog # 日志流资源路径
| 传输 | 描述 | 使用场景 |
|---|---|---|
streamable-http | 基于 HTTP(推荐) | 兼容性最佳,性能最优 |
sse | 服务器发送事件(已弃用) | 仅限旧版支持 |
stdio | 标准 I/O | 直接集成场景 |
get_system_info() - 综合系统、操作系统、CPU、内存、硬件信息get_array_status() - 存储阵列状态、容量和磁盘详情get_unraid_variables() - 系统变量和设置get_network_config() - 网络配置和访问 URLget_registration_info() - Unraid 注册详情get_connect_settings() - Unraid Connect 配置list_docker_containers() - 列出所有容器及其缓存选项manage_docker_container(id, action) - 启动/停止容器(幂等操作)get_docker_container_details(identifier) - 详细的容器信息list_vms() - 列出所有虚拟机及其状态manage_vm(id, action) - 虚拟机生命周期(启动/停止/暂停/恢复/重启)get_vm_details(identifier) - 详细的虚拟机信息get_shares_info() - 用户共享信息list_physical_disks() - 物理磁盘发现get_disk_details(disk_id) - SMART 数据和详细的磁盘信息health_check() - 综合系统健康评估get_notifications_overview() - 按严重程度分类的通知数量list_notifications(type, offset, limit) - 过滤通知列表list_available_log_files() - 可用的系统日志get_logs(path, tail_lines) - 日志文件内容检索list_rclone_remotes() - 列出已配置的远程get_rclone_config_form(provider) - 配置模式create_rclone_remote(name, type, config) - 创建新的远程delete_rclone_remote(name) - 删除现有的远程test_subscription_query(query) - 测试 GraphQL 订阅diagnose_subscriptions() - 订阅系统诊断unraid://logs/stream - 从 /var/log/syslog 实现的实时日志流,通过 WebSocket 订阅注意:MCP 资源提供实时数据流,可以通过 MCP 客户端访问。日志流资源会自动连接到你的 Unraid 系统日志,并提供实时更新。
unraid-mcp/
├── unraid_mcp/ # 主要包
│ ├── main.py # 入口点
│ ├── config/ # 配置管理
│ │ ├── settings.py # 环境及设置
│ │ └── logging.py # 日志设置
│ ├── core/ # 核心基础设施
│ │ ├── client.py # GraphQL 客户端
│ │ ├── exceptions.py # 自定义异常
│ │ └── types.py # 共享数据类型
│ ├── subscriptions/ # 实时订阅
│ │ ├── manager.py # WebSocket 管理
│ │ ├── resources.py # MCP 资源
│ │ └── diagnostics.py # 诊断工具
│ ├── tools/ # MCP 工具类别
│ │ ├── docker.py # 容器管理
│ │ ├── system.py # 系统信息
│ │ ├── storage.py # 存储及监控
│ │ ├── health.py # 健康检查
│ │ ├── virtualization.py # 虚拟机管理
│ │ └── rclone.py # 云存储
│ └── server.py # FastMCP 服务器设置
├── logs/ # 日志文件(自动生成)
├── dev.sh # 开发脚本
└── docker-compose.yml # Docker Compose 部署
# 格式化代码
uv run black unraid_mcp/
# 代码检查
uv run ruff check unraid_mcp/
# 类型检查
uv run mypy unraid_mcp/
# 运行测试
uv run pytest
# 启动开发服务器(安全地终止现有进程)
./dev.sh
# 仅停止服务器
./dev.sh --kill
| 组件 | 目的 |
|---|---|
| FastMCP 服务器 | MCP 协议实现和工具注册 |
| GraphQL 客户端 | 异步 HTTP 客户端和超时管理 |
| 订阅管理器 | WebSocket 连接以实现实时数据 |
| 工具模块 | 领域特定的业务逻辑(Docker、VM 等) |
| 配置系统 | 环境加载和验证 |
| 日志框架 | 结构化日志和文件轮换 |
🔥 端口已被占用
./dev.sh # 自动终止现有进程
🔧 连接被拒绝
# 检查 Unraid API 配置
curl -k "${UNRAID_API_URL}" -H "X-API-Key: ${UNRAID_API_KEY}"
📝 导入错误
# 重新安装依赖
uv sync --reinstall
🔍 调试模式
# 启用调试日志
export UNRAID_MCP_LOG_LEVEL=DEBUG
uv run unraid-mcp-server
# 使用内置的健康检查工具通过 MCP 客户端
# 或查看日志:logs/unraid-mcp.log
此项目采用 MIT 许可证 - 详情参见 LICENSE 文件。
git checkout -b feature/amazing-featureuv run pytestgit commit -m '添加精彩功能'git push origin feature/amazing-feature为 Unraid 社区打造,充满爱心