VMware Storage

io.github.zw008由 GitHub 帳號 zw008 發布v1.8.8更新於 Oct 27, 2026

VMware vSphere storage management with 11 MCP tools: datastores, iSCSI, vSAN.

發布方自己的服務:Tigris MCP Server

概覽

AI 產生的概覽

針對 VMware vSphere 儲存的社群 MCP 伺服器:讓助理檢視資料存放區、iSCSI、vSAN 健康狀態與光纖通道路徑,並在確認後執行 iSCSI 變更。

可以做什麼
  • 列出與瀏覽資料存放區,掃描可部署映像,查看各虛擬機的資料存放區用量
  • 讀取 iSCSI 介面卡狀態,新增或移除 iSCSI 目標並重新掃描儲存,寫入操作需確認
  • 檢查 vSAN 健康狀態、容量與效率
  • 列出光纖通道介面卡與儲存裝置路徑,包括各主機之間的路徑差異
  • 顯示伺服器使用的 vSphere 帳號及其擁有的權限
適用情境
適合儲存或虛擬化管理員讓助理巡檢 vSphere 資料存放區、排查 iSCSI 或光纖通道路徑問題、評估 vSAN 健康狀態,同時不必授予廣泛的虛擬機管理工具。其 16 個工具針對小型本機模型與最小權限服務帳號設計。
執行需求
以 Python 套件形式在本機執行(Python 3.10 以上),以 uv 或 pip 安裝,透過 mcp 子命令啟動。需在設定檔中設定 vCenter 或 ESXi 目標,密碼透過 VMWARE_ _PASSWORD 這類環境變數提供,並需要至少具備根資料夾唯讀角色的 vSphere 帳號。需能連線至 vCenter/ESXi 網路。
安裝前請注意
有四個工具會變更儲存設定:啟用 iSCSI、新增或移除目標、重新掃描。它們預設只做預覽,僅在 confirm=true 時執行,且當某個資料存放區將失去全部路徑時會被拒絕。憑證必須來自環境變數而非設定檔。所有操作都會寫入本機稽核記錄。若以 HTTPS 對外提供服務,所有呼叫者都以伺服器的同一個 vSphere 帳號行事,應依權限層級分別部署端點。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 VMware Storage,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

VMware Storage

For a read-only check of this skill with your model and agent host, use the shared model-fit self-test in the marketplace root.

Author: Wei Zhou, VMware by Broadcom — [email protected] This is a community-driven project by a VMware engineer, not an official VMware product. For official VMware developer tools see developer.broadcom.com.

English | 中文

VMware vSphere storage management: datastores, iSCSI, vSAN, and read-only Fibre Channel / multipath diagnostics — 16 MCP tools, domain-focused and lightweight.

Split from vmware-aiops for lighter context and local model compatibility.

[License: MIT]

Upgrading to 2.0

2.0 renames 10 of its MCP tools (all but the four that already started with a verb) so every name starts with a verb (e.g. fc_adapter_list → list_fc_adapters, storage_device_paths → list_storage_device_paths, storage_iscsi_add_target → add_iscsi_target). The full old → new table is in RELEASE_NOTES.md. Three tools also change a parameter: browse_datastore and scan_datastore_images take datastore_name (was ds_name, now the same as vmware-aiops' browse_datastore), and list_all_datastores gains an optional limit (same as vmware-monitor's). Everything else stays: same tools, safety gates and CLI commands (the CLI still takes the datastore name as before). If an agent prompt, script or ~/.vmware/rules.yaml names a tool, update it — though deny rules written with the old names keep working with vmware-policy ≥ 1.18 (vmware-audit policy lists any rule the renames widened), and vmware-pilot ≥ 1.13 translates old names in saved workflows. If an install older than 2.0 shares that rules.yaml, give it vmware-policy ≥ 1.18.2 too: it matches each rule against both the old and the new name, so one file serves both.

Companion Skills

SkillScopeToolsInstall
vmware-aiops ⭐ entry pointVM lifecycle, deployment, guest ops, clusters49uv tool install vmware-aiops
vmware-monitorRead-only monitoring, alarms, events, VM info27uv tool install vmware-monitor
vmware-vksTanzu Namespaces, TKC cluster lifecycle20uv tool install vmware-vks
vmware-nsxNSX networking: segments, gateways, NAT, IPAM33uv tool install vmware-nsx-mgmt
vmware-nsx-securityDFW microsegmentation, security groups, Traceflow21uv tool install vmware-nsx-security
vmware-ariaAria Ops metrics, alerts, capacity planning28uv tool install vmware-aria

Quick Install

bash
# Via PyPIuv tool install vmware-storage
# Or pippip install vmware-storage

Offline / Air-Gapped Install (from source)

This project uses the modern PEP 517 build system (hatchling), so there is no setup.py by design — that is expected, not a missing file. If you cloned the source and hit ERROR: File "setup.py" or "setup.cfg" not found ... editable mode currently requires a setuptools-based build, your pip is older than 21.3 and cannot do an editable (-e) install with a non-setuptools backend. Editable mode is a developer convenience, not needed to run the tool — do one of:

bash
# 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 .

For a truly air-gapped host, build the wheels on a connected machine and copy them over — the target then needs no network:

bash
# 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

Configuration

bash
mkdir -p ~/.vmware-storagecp config.example.yaml ~/.vmware-storage/config.yaml# Edit with your vCenter/ESXi credentials
echo "VMWARE_MY_VCENTER_PASSWORD=your_password" > ~/.vmware-storage/.envchmod 600 ~/.vmware-storage/.env
# Verifyvmware-storage doctor

MCP Tools (16)

CategoryToolsType
Datastorelist_all_datastores, get_datastore_vm_usage, browse_datastore, scan_datastore_images, list_cached_imagesRead
iSCSIenable_iscsi, get_iscsi_status, add_iscsi_target, remove_iscsi_target, rescan_storageRead/Write
vSANget_vsan_health, get_vsan_capacity, get_vsan_efficiencyRead
FC / multipathlist_fc_adapters, list_storage_device_pathsRead
Accessget_access_info — which account the server uses and whether it holds each tool's vSphere privileges (root folder)Read

Auto-Remediation Patterns (PoC)

The patterns/ directory hosts L5 auto-remediation candidate patterns from the Enterprise Harness Engineering framework. The first PoC pattern, patterns/iscsi-target-stale-rescan.yaml, describes an iSCSI HBA rescan as a low-risk, reversible, repeatable operation. The pattern schema is documented here only — runtime enforcement is not yet wired up, so this is a reference design, not production auto-remediation.

Common Workflows

Set Up iSCSI Storage on a Host

  1. Enable iSCSI adapter: vmware-storage iscsi enable esxi-01
  2. Add target: vmware-storage iscsi add-target esxi-01 10.0.0.100
  3. Verify: vmware-storage iscsi status esxi-01

The add-target command automatically rescans storage. Use --dry-run to preview any write command first.

Find Deployable Images Across Datastores

  1. List all datastores: vmware-storage datastore list
  2. Scan for images: vmware-storage datastore scan-images datastore01
  3. Browse with a pattern: vmware-storage datastore browse datastore01 --pattern "*.iso"

vSAN Health Assessment

  1. Check health: vmware-storage vsan health Cluster-Prod
  2. Check capacity: vmware-storage vsan capacity Cluster-Prod
  3. If issues found, investigate with vmware-monitor for alarms and events

Check Fibre Channel Paths

  1. Dead or disabled paths behind a datastore: vmware-storage paths devices --datastore ds-fc-01
  2. Hosts that see a shared device through a different number of paths than their peers, or not at all: vmware-storage paths devices --cluster Cluster-Prod --only-differences
  3. WWPNs for the SAN team: vmware-storage paths fc-adapters --cluster Cluster-Prod

Hosts that could not be read are listed in hosts_not_read and are never reported as missing a device. Path states are reported as vSphere reports them — standby is not flagged.

CLI

bash
# Datastorevmware-storage datastore listvmware-storage datastore browse datastore01vmware-storage datastore scan-images datastore01
# iSCSIvmware-storage iscsi status esxi-01vmware-storage iscsi enable esxi-01vmware-storage iscsi add-target esxi-01 192.168.1.100vmware-storage iscsi remove-target esxi-01 192.168.1.100vmware-storage iscsi rescan esxi-01
# vSANvmware-storage vsan health Cluster-Prodvmware-storage vsan capacity Cluster-Prod
# Fibre Channel / multipath (read-only)vmware-storage paths fc-adapters --cluster Cluster-Prodvmware-storage paths devices --datastore ds-fc-01
# Diagnosticsvmware-storage doctor

MCP Server

After uv tool install vmware-storage, start the MCP server with one command (v1.5.15+):

bash
# Recommended — single command, no network re-resolvevmware-storage mcp
# With a custom config pathVMWARE_STORAGE_CONFIG=/path/to/config.yaml vmware-storage mcp
# Or via Dockerdocker compose up -d

Agent Configuration

Add to your AI agent's MCP config:

json
{  "mcpServers": {    "vmware-storage": {      "command": "vmware-storage",      "args": ["mcp"],      "env": {        "VMWARE_STORAGE_CONFIG": "~/.vmware-storage/config.yaml"      }    }  }}
Alternative: uvx (no install) or legacy entry point
bash
# 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

Behind a corporate TLS proxy? uvx may fail with invalid peer certificate: UnknownIssuer. Use the recommended vmware-storage mcp form above (no network needed), or set UV_NATIVE_TLS=true.

Why a Separate Skill?

vmware-aiops has 61 MCP tools — too heavy for local LLMs (7B-14B). By splitting storage into its own skill:

  • 16 tools — fits comfortably in small model context windows
  • Domain-focused — storage admins get only what they need
  • Least privilege — can run under a vCenter service account with storage read-only permissions
  • Composable — use alongside vmware-monitor or vmware-aiops as needed

Version Compatibility

Python: 3.10+ (since v1.5.27 — previously 3.11+). Tested on 3.10 / 3.11 / 3.12.

vSphere / VCFSupportNotes
VCF 9.1 / vSphere 9.1FullReleased 2026-05-12. pyVmomi+vSAN SDK <10.0 works via SOAP.
VCF 9.0 / vSphere 9.0FullpyVmomi 8.0.3+ with bundled vSAN SDK connects to vSphere 9.
8.0FullvSAN SDK built into pyVmomi 8.0.3+
7.0FullAll storage APIs work
6.7CompatibleiSCSI + datastore features work; vSAN limited
Official Broadcom References

Safety

FeatureDescription
Read-heavy12/16 tools are read-only
Preview by default (MCP)The 4 write tools take confirm (default false): a call without it changes nothing and returns blast_radius (host, adapters, and for target removal the paths, devices and datastores behind the target). confirm=true is refused when a datastore would lose every path or part of the blast radius could not be read. the old dry_run alias was removed in 2.4.3 and is refused as an unknown argument
Input validationIP addresses and ports validated before iSCSI operations
Audit loggingAll operations logged to ~/.vmware-storage/audit.log
No VM operationsCannot create, delete, or modify VMs
Credential safetyPasswords only from environment variables, never config files

Troubleshooting

ProblemCause & Fix
iSCSI enable fails with "already enabled"Not an error — adapter is already active. Run iscsi status to see configured targets.
"Datastore not found" when browsingDatastore names are case-sensitive. Run datastore list to get the exact name.
get_vsan_health returns overall_health: nullnull = not asked (see health_not_queried_reason), never a measurement; a string is always vSAN's own answer, including its own "unknown". Usual cause: connected to standalone ESXi, but the health service runs in vCenter.
Rescan doesn't discover new LUNsWait 15-30 seconds after adding targets, then rescan again. Verify target IP is reachable from ESXi.
"Password not found" errorVariable names follow VMWARE_<TARGET_UPPER>_PASSWORD (hyphens → underscores). Check ~/.vmware-storage/.env.
doctor fails with "no vSphere role", or every command fails with "session is not authenticated"The login works but the account has no vSphere role. Assign one (Read-Only or higher) on the vCenter root folder (Administration > Access Control > Global Permissions). Mid-run, the same fault can be an expired session: run the command again.
Connection timeout to vCenterUse vmware-storage doctor --skip-auth to bypass auth checks on high-latency networks.
"Datastore browse did not finish within Ns"The datastore is very large or busy. Narrow the search with a sub-path and a specific pattern (e.g. datastore browse ds01 --path templates --pattern "*.ova") instead of browsing the root — do not just retry the same broad browse.

Remote access (HTTPS) and limiting tools

By default vmware-storage mcp speaks stdio to one local client and offers every tool. Two options change that (vmware-policy ≥ 1.21.0).

Serve over HTTPS so clients on other machines can connect. Every caller needs a bearer token:

bash
vmware-audit token create alice          # prints the token once; give it to alicevmware-audit token list                  # names onlyvmware-audit token revoke alice          # refused from its next request, no restartvmware-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

Connect a client (Claude Code shown; any MCP client that supports streamable HTTP and custom headers works):

bash
claude mcp add --transport http vmware-storage https://mcp.example.com:8443/mcp \    --header "Authorization: Bearer $VMWARE_MCP_TOKEN"
json
{  "mcpServers": {    "vmware-storage": {      "type": "http",      "url": "https://mcp.example.com:8443/mcp",      "headers": { "Authorization": "Bearer ${VMWARE_MCP_TOKEN}" }    }  }}
  • The server will not start without a token, refuses Host/Origin values outside --public-name, and checks before it binds that unauthenticated requests get 401. Use a certificate your clients trust for those names.
  • Behind a TLS-terminating reverse proxy on the same machine use --transport http --host 127.0.0.1 --public-name mcp.example.com and pass the Authorization header through.
  • Behind a load balancer or gateway on another machine, keep --transport https (a self-signed certificate is fine), list in --public-name the host name the balancer sends as Host, and have it forward Authorization. Its health probe can use GET /healthz, which needs no token and returns only {"status": "ok"} (vmware-policy ≥ 1.23.0).
  • Send traceparent or X-Request-ID with each request to have it stored on the audit row; vmware-audit log --correlation-id ID then finds the calls behind one platform request.
  • The audit log records each caller as token:<name>. Calls run side by side, also on the same target: the server keeps up to VMWARE_MCP_POOL_SIZE (default 2) sessions per target, each one a login on that target, and a call waits at most 300 s for a free session (vmware-policy ≥ 1.22.0).
  • Everyone who can reach the endpoint acts with this server's account. Tokens identify callers; they grant nothing on the platform. Run one endpoint per privilege level. vmware-storage access-info shows which account that is and what it may do.
  • Several people or roles on one endpoint: run vmware-audit roles enable once, then give each token a role (vmware-audit token create NAME --role reader, or a role in roles.yaml naming tools and targets; vmware-policy ≥ 1.24.0). A role limits what the token may call on this endpoint; it cannot grant more than the account has. See vmware-policy's README, "Roles for network callers".

Offer only read tools, plus the writes you choose:

bash
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

Tools not offered do not appear in the client's tool list. A bad value or an unknown write tool stops the server (exit 2). This limits what clients are offered; it is not authorization, so the account itself should be least-privilege.

Details: skills/vmware-storage/references/setup-guide.md ("Serving MCP over HTTPS", "Limiting which tools are offered").

License

MIT

來源:README.md,提交 0c385a4

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v1.8.8最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

其他 Storage 整合