关于 VMware Storage
VMware Storage 是面向 vSphere 存储管理员的专用 MCP 服务和命令行工具,涵盖数据存储、iSCSI、vSAN,以及只读的 Fibre Channel 和多路径诊断;写入操作设有确认保护。
主要功能
- 01浏览数据存储并扫描镜像
- 02配置 iSCSI 和管理目标
- 03检查 vSAN 健康状态与容量
- 04只读 Fibre Channel 诊断
- 05比较多路径设备路径
- 06写入操作需确认并记录审计
适用场景
- 01查找数据存储中的可部署镜像
- 02配置并验证 iSCSI 目标
- 03检查 vSAN 健康状态和容量
- 04排查 Fibre Channel 路径差异
MCP 相关
它向 MCP 客户端提供 16 个 vSphere 存储工具,包含只读和写入操作。写入工具要求明确确认,并在变更前提供影响信息。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
VMware 存储
作者:Wei Zhou,VMware by Broadcom — [email protected] 这是由 VMware 工程师发起的社区项目,并非 VMware 官方产品。 VMware 官方开发工具请参阅 developer.broadcom.com。
VMware vSphere 存储管理:数据存储、iSCSI、vSAN,以及只读的光纤通道/多路径诊断——16 个 MCP 工具,专注领域且轻量。
从 vmware-aiops 拆分而来,可减轻上下文负担并兼容本地模型。
升级到 2.0
2.0 重命名了其中 10 个 MCP 工具(除 4 个原本就以动词开头的工具外),使所有名称都以动词开头(例如,fc_adapter_list → list_fc_adapters、storage_device_paths → list_storage_device_paths、storage_iscsi_add_target → add_iscsi_target)。完整的旧名称 → 新名称对照表见
RELEASE_NOTES.md。此外,有 3 个工具更改了参数:browse_datastore 和 scan_datastore_images 使用
datastore_name(原为 ds_name,现在与 vmware-aiops 的 browse_datastore 一致),而 list_all_datastores 新增了一个
可选的 limit(与 vmware-monitor 一致)。其他一切保持不变:工具、安全防护和 CLI 命令均相同(CLI
仍像以前一样使用数据存储名称)。如果 Agent 提示词、脚本或 ~/.vmware/rules.yaml 中指定了某个工具,请更新相应名称——不过,使用旧名称编写的拒绝
规则仍可在 vmware-policy ≥ 1.18 中正常工作(vmware-audit policy 会列出重命名后规则覆盖范围有所扩大的情况),而 vmware-pilot ≥ 1.13 会转换已保存工作流中的旧名称。
如果低于 2.0 的安装与其共用该 rules.yaml,也请将它升级到 vmware-policy ≥ 1.18.2:该版本会
将每条规则同时与旧名称和新名称匹配,因此一个文件即可供两者使用。
配套技能
| 技能 | 范围 | 工具 | 安装 |
|---|---|---|---|
| vmware-aiops ⭐ 入口 | VM 生命周期、部署、客户机操作、集群 | 49 | uv tool install vmware-aiops |
| vmware-monitor | 只读监控、警报、事件、VM 信息 | 27 | uv tool install vmware-monitor |
| vmware-vks | Tanzu 命名空间、TKC 集群生命周期 | 20 | uv tool install vmware-vks |
| vmware-nsx | NSX 网络:网段、网关、NAT、IPAM | 33 | uv tool install vmware-nsx-mgmt |
| vmware-nsx-security | DFW 微分段、安全组、Traceflow | 21 | uv tool install vmware-nsx-security |
| vmware-aria | Aria Ops 指标、警报、容量规划 | 28 | uv tool install vmware-aria |
快速安装
# Via PyPI
uv tool install vmware-storage
# Or pip
pip install vmware-storage
离线/隔离网络环境安装(从源代码)
本项目使用现代 PEP 517 构建系统(hatchling),因此有意不提供
setup.py——这是预期行为,并非文件缺失。如果你克隆了
源代码,并遇到 ERROR: File "setup.py" or "setup.cfg" not found ... editable mode currently requires a setuptools-based build,说明你的 pip 版本低于 21.3,无法使用非 setuptools 后端进行
可编辑(-e)安装。可编辑模式是为开发者提供的便利,并非运行工具所必需——可选择以下方式之一:
# From the source tree — a normal (non-editable) install builds a wheel:
pip install . # NOT pip install -e .
# ...or upgrade pip first, and editable works too:
pip install --upgrade pip && pip install -e .
对于真正与网络隔离的主机,请在联网的计算机上构建 wheel,并将其复制过去——目标主机无需联网:
# On a connected machine, collect this package + its dependencies as wheels:
pip wheel . -w dist # → dist/*.whl (or: uv build, for just this package)
# Copy dist/ to the air-gapped host, then install offline:
pip install --no-index --find-links dist vmware-storage
配置
mkdir -p ~/.vmware-storage
cp config.example.yaml ~/.vmware-storage/config.yaml
# Edit with your vCenter/ESXi credentials
echo "VMWARE_MY_VCENTER_PASSWORD=your_password" > ~/.vmware-storage/.env
chmod 600 ~/.vmware-storage/.env
# Verify
vmware-storage doctor
MCP 工具(16 个)
| 类别 | 工具 | 类型 |
|---|---|---|
| 数据存储 | list_all_datastores、get_datastore_vm_usage、browse_datastore、scan_datastore_images、list_cached_images | 只读 |
| iSCSI | enable_iscsi、get_iscsi_status、add_iscsi_target、remove_iscsi_target、rescan_storage | 读/写 |
| vSAN | get_vsan_health、get_vsan_capacity、get_vsan_efficiency | 只读 |
| FC / 多路径 | list_fc_adapters、list_storage_device_paths | 只读 |
| 访问权限 | get_access_info — 服务器使用的账户,以及该账户是否拥有每个工具所需的 vSphere 权限(根文件夹) | 只读 |
自动修复模式(PoC)
patterns/ 目录收录了 Enterprise Harness Engineering 框架中的 L5 自动修复候选模式。首个 PoC 模式 patterns/iscsi-target-stale-rescan.yaml 将 iSCSI HBA 重新扫描描述为一种低风险、可逆且可重复的操作。模式架构仅在此处记录——目前尚未接入运行时强制执行,因此这是一份参考设计,而非生产环境中的自动修复方案。
常见工作流
在主机上设置 iSCSI 存储
- 启用 iSCSI 适配器:
vmware-storage iscsi enable esxi-01 - 添加目标:
vmware-storage iscsi add-target esxi-01 10.0.0.100 - 验证:
vmware-storage iscsi status esxi-01
add-target 命令会自动重新扫描存储。执行任何写入命令前,可先使用 --dry-run 预览。
查找各数据存储中的可部署镜像
- 列出所有数据存储:
vmware-storage datastore list - 扫描镜像:
vmware-storage datastore scan-images datastore01 - 按模式浏览:
vmware-storage datastore browse datastore01 --pattern "*.iso"
vSAN 健康评估
- 检查运行状况:
vmware-storage vsan health Cluster-Prod - 检查容量:
vmware-storage vsan capacity Cluster-Prod - 如果发现问题,使用
vmware-monitor调查警报和事件
检查光纤通道路径
- 检查数据存储下失效或已禁用的路径:
vmware-storage paths devices --datastore ds-fc-01 - 查找通过与同级主机不同数量的路径(或完全没有路径)访问共享设备的主机:
vmware-storage paths devices --cluster Cluster-Prod --only-differences - 获取 SAN 团队所需的 WWPN:
vmware-storage paths fc-adapters --cluster Cluster-Prod
无法读取的主机会列在 hosts_not_read 中,绝不会被报告为缺少设备。路径状态按 vSphere 的报告结果显示——standby 不会被标记。
命令行
# Datastore
vmware-storage datastore list
vmware-storage datastore browse datastore01
vmware-storage datastore scan-images datastore01
# iSCSI
vmware-storage iscsi status esxi-01
vmware-storage iscsi enable esxi-01
vmware-storage iscsi add-target esxi-01 192.168.1.100
vmware-storage iscsi remove-target esxi-01 192.168.1.100
vmware-storage iscsi rescan esxi-01
# vSAN
vmware-storage vsan health Cluster-Prod
vmware-storage vsan capacity Cluster-Prod
# Fibre Channel / multipath (read-only)
vmware-storage paths fc-adapters --cluster Cluster-Prod
vmware-storage paths devices --datastore ds-fc-01
# Diagnostics
vmware-storage doctor
MCP 服务
安装 vmware-storage 后,只需一条命令即可启动 MCP 服务(v1.5.15+):
# Recommended — single command, no network re-resolve
vmware-storage mcp
# With a custom config path
VMWARE_STORAGE_CONFIG=/path/to/config.yaml vmware-storage mcp
# Or via Docker
docker compose up -d
Agent 配置
将以下内容添加到 AI Agent 的 MCP 配置中:
{
"mcpServers": {
"vmware-storage": {
"command": "vmware-storage",
"args": ["mcp"],
"env": {
"VMWARE_STORAGE_CONFIG": "~/.vmware-storage/config.yaml"
}
}
}
}
替代方式:使用 uvx(无需安装)或旧版入口点
# Run without installing (requires PyPI access each launch)
uvx --from vmware-storage vmware-storage mcp
# Legacy entry point (still works, kept for backward compatibility)
vmware-storage-mcp
处于企业 TLS 代理之后? uvx 可能会因
invalid peer certificate: UnknownIssuer而失败。 请使用上文推荐的vmware-storage mcp形式(无需联网),或设置UV_NATIVE_TLS=true。
为什么要单独拆分一个技能?
vmware-aiops 有 61 个 MCP 工具,对本地大模型(7B-14B)来说过于庞大。将存储拆分为独立技能后:
- 16 个工具 — 可轻松放入小型模型的上下文窗口
- 专注领域 — 存储管理员只需使用所需工具
- 最小权限 — 可使用仅具备存储只读权限的 vCenter 服务账户运行
- 可组合 — 可按需与 vmware-monitor 或 vmware-aiops 搭配使用
版本兼容性
Python:3.10+(自 v1.5.27 起——此前为 3.11+)。已在 3.10 / 3.11 / 3.12 上测试。
| vSphere / VCF | 支持情况 | 备注 |
|---|---|---|
| VCF 9.1 / vSphere 9.1 | 完全支持 | 于 2026-05-12 发布。pyVmomi+vSAN SDK <10.0 可通过 SOAP 工作。 |
| VCF 9.0 / vSphere 9.0 | 完全支持 | pyVmomi 8.0.3+ 内置的 vSAN SDK 可连接 vSphere 9。 |
| 8.0 | 完全支持 | vSAN SDK 已内置于 pyVmomi 8.0.3+ |
| 7.0 | 完全支持 | 所有存储 API 均可使用 |
| 6.7 | 兼容 | iSCSI + 数据存储功能可用;vSAN 支持有限 |
Broadcom 官方参考资料
- SDK:https://developer.broadcom.com/sdks — VCF Python SDK、vSAN Management SDK(内置于 pyVmomi)
- REST API:https://developer.broadcom.com/xapis — vSAN Management API、VCF API
- CLI 工具:https://developer.broadcom.com/tools — PowerCLI 9.1、ESXCLI
安全性
| 功能 | 说明 |
|---|---|
| 以读取为主 | 16 个工具中有 12 个为只读 |
| 默认预览(MCP) | 4 个写入工具都接受 confirm(默认值为 false):不传此参数调用时不会更改任何内容,并会返回 blast_radius(主机、适配器,以及移除目标时该目标后方的路径、设备和数据存储)。如果数据存储将失去所有路径,或无法读取部分影响范围,则会拒绝 confirm=true。旧版 dry_run 别名已在 2.4.3 中移除,并会作为未知参数遭到拒绝 |
| 输入验证 | 执行 iSCSI 操作前会验证 IP 地址和端口 |
| 审计日志 | 所有操作都会记录到 ~/.vmware-storage/audit.log |
| 不执行 VM 操作 | 无法创建、删除或修改 VM |
| 凭据安全 | 密码仅从环境变量读取,不会读取配置文件 |
故障排除
| 问题 | 原因与解决方法 |
|---|---|
| 启用 iSCSI 失败,提示“already enabled” | 这不是错误——适配器已处于活动状态。运行 iscsi status 查看已配置的目标。 |
| 浏览时提示“Datastore not found” | 数据存储名称区分大小写。运行 datastore list 获取准确名称。 |
get_vsan_health 返回 overall_health: null | null = 未查询(参见 health_not_queried_reason),绝不表示测量结果;字符串始终是 vSAN 自身的回答,包括它自己的 "unknown"。常见原因:连接到了独立 ESXi,但运行健康服务的是 vCenter。 |
| 重新扫描未发现新的 LUN | 添加目标后等待 15-30 秒,再次扫描。确认从 ESXi 可以访问目标 IP。 |
| 提示“Password not found” | 变量名称格式为 VMWARE_<TARGET_UPPER>_PASSWORD(连字符 → 下划线)。检查 ~/.vmware-storage/.env。 |
doctor 提示“no vSphere role”而失败,或所有命令都提示“session is not authenticated”而失败 | 登录成功,但此账户没有 vSphere 角色。在 vCenter 根文件夹上分配一个角色(只读或更高权限)(Administration > Access Control > Global Permissions)。如果在运行过程中出现相同错误,也可能是会话已过期:重新运行命令。 |
| 连接 vCenter 超时 | 在高延迟网络上使用 vmware-storage doctor --skip-auth 跳过身份验证检查。 |
| 提示“Datastore browse did not finish within Ns” | 数据存储过大或正忙。使用子路径和具体匹配模式缩小搜索范围(例如 datastore browse ds01 --path templates --pattern "*.ova"),不要浏览根目录——也不要只是重复相同的宽泛搜索。 |
远程访问(HTTPS)和限制工具
默认情况下,vmware-storage mcp 通过 stdio 与一个本地客户端通信,并提供所有工具。两种选项可以改变这一行为
(vmware-policy ≥ 1.21.0)。
通过 HTTPS 提供服务,让其他机器上的客户端也能连接。每个调用方都需要一个 bearer token:
vmware-audit token create alice # prints the token once; give it to alice
vmware-audit token list # names only
vmware-audit token revoke alice # refused from its next request, no restart
vmware-storage mcp --transport https --host 0.0.0.0 --port 8443 \
--cert /etc/vmware-mcp/server.pem --key /etc/vmware-mcp/server-key.pem \
--public-name mcp.example.com
连接客户端(此处以 Claude Code 为例;任何支持可流式 HTTP 和自定义标头的 MCP 客户端均可):
claude mcp add --transport http vmware-storage https://mcp.example.com:8443/mcp \
--header "Authorization: Bearer $VMWARE_MCP_TOKEN"
{
"mcpServers": {
"vmware-storage": {
"type": "http",
"url": "https://mcp.example.com:8443/mcp",
"headers": { "Authorization": "Bearer ${VMWARE_MCP_TOKEN}" }
}
}
}
- 没有 token 时,服务不会启动;它会拒绝
--public-name以外的 Host/Origin 值,并在绑定前检查未通过身份验证的请求是否会收到 401。请使用客户端信任的、适用于这些名称的证书。 - 如果在同一台机器上使用终止 TLS 的反向代理,请使用
--transport http --host 127.0.0.1 --public-name mcp.example.com,并透传Authorization标头。 - 如果负载均衡器或网关位于另一台机器上,请保留
--transport https(自签名证书也可以),在--public-name中列出负载均衡器发送的 Host 主机名,并让它转发Authorization。其健康探测可使用GET /healthz,该请求无需 token,且只返回{"status": "ok"}(vmware-policy ≥ 1.23.0)。 - 每个请求都发送
traceparent或X-Request-ID,以便将其存入审计记录;随后运行vmware-audit log --correlation-id ID,即可查找某个平台请求背后的调用。 - 审计日志会将每个调用方记录为
token:<name>。调用会并行执行,即使针对同一目标也一样:服务会为每个目标保留最多VMWARE_MCP_POOL_SIZE(默认值为 2)个会话,每个会话都使用该目标上的一个登录;调用等待空闲会话的时间最长为 300 s(vmware-policy ≥ 1.22.0)。 - 任何能够访问此端点的人都将以此服务的账户身份操作。 Token 用于识别调用方;它们不会授予平台权限。每个权限级别应运行一个端点。
vmware-storage access-info会显示该账户及其可执行的操作。 - **一个端点供多人或多个角色使用:**运行一次
vmware-audit roles enable,然后为每个 token 分配一个角色(vmware-audit token create NAME --role reader,或在roles.yaml中定义一个列出工具和目标的角色;vmware-policy ≥ 1.24.0)。角色会限制 token 在此端点上可调用的内容;它不能授予超出账户权限的权限。请参阅 vmware-policy 的 README 中的“网络调用方的角色”。
仅提供只读工具,以及你选择的写入工具:
vmware-storage mcp --expose read --allow-write enable_iscsi
# or: VMWARE_STORAGE_MCP_EXPOSE=read VMWARE_STORAGE_MCP_ALLOW_WRITE=enable_iscsi vmware-storage mcp
未提供的工具不会出现在客户端的工具列表中。无效值或未知的写入工具会导致服务停止(exit 2)。这只限制提供给客户端的工具;它不属于授权机制,因此账户本身应遵循最小权限原则。
详情:skills/vmware-storage/references/setup-guide.md(“通过 HTTPS 提供 MCP 服务”“限制提供的工具”)。
许可证
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。