mcp openmediavault
A. 模型上下文协议(MCP) 服务器 OpenMediaVault(OMV),通过OMV JSON-RPC API为AI助手提供对NAS存储、共享、用户和系统管理的完全访问。
兼容 OMV 5和OMV 6.
特性
33工具 分为五类:
系统
| 工具 | 说明 |
|---|---|
get_system_info | 主机名、版本、CPU型号、正常运行时间、内存 |
get_system_stats | CPU使用率、内存使用率、平均负载 |
get_cpu_temp | CPU温度读数 |
get_network_interfaces | 具有IP、网络掩码、网关、速度的网络接口 |
get_system_log | 系统日志条目 |
get_power_management | 计划关机、局域网唤醒设置 |
存储
| 工具 | 说明 |
|---|---|
list_disks | 带有型号、供应商、大小、序列号、温度、SMART状态的物理磁盘 |
list_filesystems | 具有类型、标签、大小、使用情况、装载状态的文件系统 |
get_mounted_filesystems | 当前装载的文件系统具有使用情况统计信息 |
get_smart_info | 磁盘的SMART属性 |
get_smart_extended_info | 扩展SMART信息,包括自检结果 |
get_smart_device_settings | 每个磁盘的SMART监控设置 |
list_smart_jobs | 计划SMART自检作业 |
list_raid_devices | 软件RAID(mdadm)设备 |
股份
| 工具 | 说明 |
|---|---|
list_shared_folders | 具有文件系统引用和权限的共享文件夹 |
get_shared_folder_privileges | 共享文件夹的用户/组访问权限 |
list_smb_shares | SMB/CIFS(Samba/Windows)共享 |
get_smb_settings | 全局SMB服务设置 |
list_nfs_shares | NFS与客户端共享和导出选项 |
get_nfs_settings | 全局NFS服务设置 |
list_ftp_shares | FTP共享 |
get_ftp_settings | 全局FTP服务设置 |
用户和组
| 工具 | 说明 |
|---|---|
list_users | 具有UID、GID、组的本地用户帐户 |
get_user | 特定用户的详细信息 |
list_groups | 具有GID、评论、成员的本地组 |
get_group | 特定组的详细信息 |
enumerate_users | 所有系统用户,包括系统帐户 |
enumerate_groups | 所有系统组 |
get_user_privileges | 用户的共享文件夹权限 |
服务
| 工具 | 说明 |
|---|---|
get_services_status | 所有服务的状态(SMB、NFS、SSH、FTP、rsync等) |
list_cron_jobs | 使用命令和计划安排cron作业 |
get_ssh_settings | SSH服务设置 |
list_rsync_jobs | Rsync备份/同步作业 |
list_rsync_modules | Rsync守护程序模块 |
get_rsync_settings | 全局rsync设置 |
get_notification_settings | 电子邮件通知设置 |
get_updates | 可用的软件更新 |
list_plugins | 已安装OMV插件 |
get_watchdog_settings | 硬件监视定时器设置 |
安装
git clone git@github.com:fredriksknese/mcp-openmediavault.git
cd mcp-openmediavault
npm install
npm run build配置
服务器是通过环境变量配置的:
| 变量 | 必填 | 默认 | 描述 |
|---|---|---|---|
OMV_HOST | 是 | -- | OMV服务器主机名或IP地址 |
OMV_USERNAME | 没有 | admin | OMV管理员用户名 |
OMV_PASSWORD | 是 | -- | OMV管理员密码 |
OMV_ALLOW_SELF_SIGNED | 没有 | true | 接受自签名SSL证书 |
OMV 5/OMV 6兼容性
服务器连接到JSON-RPC端点 https://{host}/rpc.php,这是OMV 5和OMV 6的标准端点。
会话管理遵循OMV协议:
- 通过登录
POST /rpc.php随着Session.login - 提取会话cookie(
PHPSESSID)从Set-Cookie响应头 - 发送这两个
Cookie标题和X-OPENMEDIAVAULT-SESSIONID所有后续请求的标头
如果会话过期(HTTP 401),客户端会自动重新进行身份验证并重试。
使用Claude Desktop
添加到您的 claude_desktop_config.json:
{
"mcpServers": {
"openmediavault": {
"command": "node",
"args": ["/absolute/path/to/mcp-openmediavault/dist/index.js"],
"env": {
"OMV_HOST": "192.168.1.100",
"OMV_USERNAME": "admin",
"OMV_PASSWORD": "your-password"
}
}
}
}使用Claude代码
claude mcp add openmediavault -- node /absolute/path/to/mcp-openmediavault/dist/index.js运行前设置环境变量,或在MCP设置中配置它们。
示例提示
连接后,您可以向您的AI助手询问以下问题:
- *“当前磁盘使用情况如何,装载了哪些文件系统?”*
- *“显示所有磁盘的SMART运行状况”*
- *“列出所有SMB共享及其启用状态”*
- *“NAS上当前正在运行哪些服务?”*
- *“显示所有用户及其组成员身份”*
- *“OMV有可用的软件更新吗?”*
- *“计划了哪些cron作业,它们什么时候运行?”*
- *“显示NFS导出配置”*
- *“CPU温度和系统负载是多少?”*
发展
npm run dev # Run with tsx (auto-reloads)
npm run build # Compile TypeScript to dist/
npm start # Run compiled output建筑
src/
├── index.ts # Entry point — creates MCP server + STDIO transport
├── omv-client.ts # JSON-RPC client with session management and auto-retry
└── tools/
├── system.ts # System info, stats, network interfaces (6 tools)
├── storage.ts # Disks, filesystems, SMART, RAID (8 tools)
├── shares.ts # Shared folders, SMB, NFS, FTP (8 tools)
├── users.ts # Users and groups (7 tools)
└── services.ts # Services status, cron, SSH, rsync, plugins (10 tools)需求
- Node.js 18+
- 具有管理员凭据的OpenMediaVault 5或6
- 具有API访问权限的管理员帐户(默认
admin账户工作)
许可证
请参阅许可证中的许可证
