OpenMediaVault管理协议

通过JSON-RPC API为AI助手提供对OpenMediaVault NAS存储、共享、用户和系统管理的全面访问。

  • by fredriksknese
  • TypeScript
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 fredriksknese/mcp-openmediavault

使用说明

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协议:

  1. 通过登录 POST /rpc.php 随着 Session.login
  2. 提取会话cookie(PHPSESSID)从 Set-Cookie 响应头
  3. 发送这两个 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 账户工作)

许可证

请参阅许可证中的许可证