使用说明
unraid mcp
一个MCP(模型上下文协议)服务器,为AI助手提供受控访问权限,以管理Unraid服务器上的Docker容器、虚拟机和系统健康状况。
在Unraid上作为Docker容器运行。通过带有承载令牌身份验证的流式HTTP连接到Claude Code(或任何MCP客户端)。
特性
跨三个领域的31个MCP工具:
- Docker(16个工具) --列出、检查、启动、停止、重新启动、删除、创建容器;拉取图像;查看日志和统计数据;列出、检查、创建、删除、连接、断开网络连接
- 虚拟机(12个工具) --列出、检查、启动、停止、强制停止、暂停、恢复、重启、创建、删除虚拟机;列出并创建快照(通过libvirt)
- 系统健康(3个工具) --CPU/内存/温度概述、Unraid阵列状态、每个磁盘信息
安全护栏:
- 认证 --所有请求都需要承载令牌
- 确认提示 --破坏性操作(停止、删除、删除)需要使用一次性、有时间限制的令牌进行两步确认流程
- 允许名单/拒绝名单 --对容器和VM名称进行glob模式过滤;服务器自己的容器始终受到保护
- 审核日志记录 --每个工具调用都以换行符分隔的JSON形式记录,并带有时间戳、参数、结果和持续时间
快速开始
1.在Unraid上部署
git clone https://github.com/jamesprial/unraid-mcp.git
cd unraid-mcp
# Set your auth token (or leave empty to auto-generate one)
export UNRAID_MCP_AUTH_TOKEN="your-secret-token"
# Build and run
docker compose up -d
服务器在端口8080上启动。如果没有设置身份验证令牌,则会生成一个并打印到容器日志中:
docker logs unraid-mcp
2.配置克劳德代码
添加到您的 .mcp.json:
{
"mcpServers": {
"unraid": {
"type": "streamable-http",
"url": "http://<unraid-ip>:8080/mcp",
"headers": {
"Authorization": "Bearer your-secret-token"
}
}
}
}
3.使用它
让Claude管理您的Unraid服务器:
- “列出所有正在运行的Docker容器”
- “停止plex容器”
- “阵列状态如何?”
- “显示磁盘温度”
- “启动Windows 10虚拟机”
配置
复制并编辑示例配置:
cp config.example.yaml config/config.yaml
server:
port: 8080
auth_token: "" # set here or via UNRAID_MCP_AUTH_TOKEN env var
safety:
docker:
allowlist: [] # empty = all containers allowed
denylist:
- "unraid-mcp" # prevent self-management
- "*backup*" # glob patterns supported
vms:
allowlist: []
denylist: []
paths:
emhttp: "/host/emhttp"
proc: "/host/proc"
sys: "/host/sys"
docker_socket: "/var/run/docker.sock"
libvirt_socket: "/var/run/libvirt/libvirt-sock"
audit:
enabled: true
log_path: "/config/audit.log"
max_size_mb: 50
环境变量
| 变量 | 描述 |
|---|---|
UNRAID_MCP_AUTH_TOKEN |
承载令牌(覆盖配置文件) |
UNRAID_MCP_CONFIG_PATH |
配置文件路径(默认: /config/config.yaml) |
集装箱支架
| 主机路径 | 容器路径 | 模式 | 用途 |
|---|---|---|---|
/var/run/docker.sock |
/var/run/docker.sock |
rw | Docker API |
/var/run/libvirt/libvirt-sock |
/var/run/libvirt/libvirt-sock |
rw | 通过libvirt管理虚拟机 |
/var/local/emhttp |
/host/emhttp |
ro | 取消阵列和磁盘状态 |
/proc |
/host/proc |
ro | CPU和内存统计信息 |
/sys |
/host/sys |
ro | 硬件温度 |
./config |
/config |
rw | 配置文件和审核日志 |
安全模型
确认流程
破坏性工具(docker_stop, docker_remove, vm_delete等等)使用两步确认:
- 第一个调用返回操作的描述和
confirmation_token - 使用令牌的第二次调用执行操作
- 代币为一次性使用,5分钟后过期
允许名单/拒绝名单
使用glob模式按名称过滤容器和VM。Denylist总是优先考虑。MCP服务器自己的容器(unraid-mcp)总是被含蓄地否认。
审核日志
所有操作都记录到 /config/audit.log 作为换行符分隔的JSON:
{"timestamp":"2025-01-15T10:30:00Z","tool":"docker_stop","params":{"id":"plex"},"result":"ok","duration_ns":150000000}
发展
# Run tests
go test ./...
# Run with race detector
go test -race ./...
# Build without libvirt (VM tools return stub errors)
go build ./...
# Build with libvirt support
go build -tags libvirt ./...
许可证
麻省理工学院
