VMware Storage について
VMware Storageは、vSphereストレージ管理者向けの専用MCPサーバー兼コマンドラインツールです。データストア、iSCSI、vSANに加え、Fibre Channelとマルチパスの読み取り専用診断を提供し、書き込みには確認手順があります。
主な機能
- 01データストアの閲覧とイメージ検索
- 02iSCSIの設定とターゲット管理
- 03vSANの健全性と容量の確認
- 04Fibre Channelの読み取り専用診断
- 05マルチパスのデバイスパス比較
- 06確認付き書き込みと監査ログ
活用シーン
- 01データストアから展開可能なイメージを探す
- 02iSCSIターゲットを設定して検証する
- 03vSANの健全性と容量を確認する
- 04Fibre Channelパスの差異を調査する
MCP 対応
MCPクライアントに、読み取りと書き込みを含む16個のvSphereストレージツールを公開します。書き込みツールは明示的な確認を必要とし、変更前に影響情報を返します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
VMware ストレージ
Author: Wei Zhou, VMware by Broadcom — [email protected] VMware のエンジニアによるコミュニティ主導のプロジェクトであり、VMware の公式製品ではありません。 VMware の公式開発者向けツールについては、developer.broadcom.com をご覧ください。
VMware vSphere のストレージ管理:データストア、iSCSI、vSAN、読み取り専用の Fibre Channel/マルチパス診断に対応した、ドメイン特化型の軽量な 16 個の MCP ツールです。
コンテキストを軽量化し、ローカルモデルとの互換性を高めるため、vmware-aiops から分割しました。
2.0 へのアップグレード
2.0 では、MCP ツール 10 個の名前を変更します(すでに動詞で始まっていた 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 では引き続き、以前と同じようにデータストア名を指定します)。エージェントのプロンプト、スクリプト、または ~/.vmware/rules.yaml でツール名を指定している場合は、更新してください。ただし、古い名前で記述された拒否ルールは vmware-policy ≥ 1.18 で引き続き動作します(vmware-audit policy で、名前変更によって対象が広がったルールを一覧表示できます)。また、vmware-pilot ≥ 1.13 では、保存済みのワークフロー内の古い名前が変換されます。
2.0 より前のインストールと同じ rules.yaml を共有している場合は、そのインストールも vmware-policy ≥ 1.18.2 に更新してください。このバージョンでは各ルールが古い名前と新しい名前の両方に照合されるため、1 つのファイルを両方で使用できます。
関連スキル
| スキル | 対象範囲 | ツール | インストール |
|---|---|---|---|
| vmware-aiops ⭐ エントリーポイント | VM のライフサイクル、デプロイ、ゲスト操作、クラスター | 49 | uv tool install vmware-aiops |
| vmware-monitor | 読み取り専用の監視、アラーム、イベント、VM 情報 | 27 | uv tool install vmware-monitor |
| vmware-vks | Tanzu Namespaces、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 は警告対象になりません。
CLI
# 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 サーバー
uv tool install vmware-storage の後、1 つのコマンドで 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
エージェントの設定
AI エージェントの 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 には MCP ツールが 61 個あり、ローカル LLM(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 | 完全対応 | vSAN SDK がバンドルされた pyVmomi 8.0.3+ で 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 自身の応答であり、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 で 1 つのローカルクライアントと通信し、すべてのツールを提供します。次の 2 つのオプションで変更できます
(vmware-policy ≥ 1.21.0)。
HTTPS で提供すると、ほかのマシン上のクライアントが接続できます。すべての呼び出し元にベアラートークンが必要です。
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}" }
}
}
}
- トークンがないとサーバーは起動せず、
--public-name以外の Host/Origin 値を拒否します。また、バインド前に、認証されていないリクエストに 401 が返されることを確認します。クライアントがこれらの名前を信頼する証明書を使用してください。 - 同じマシン上の TLS 終端リバースプロキシの背後では、
--transport http --host 127.0.0.1 --public-name mcp.example.comを使用し、Authorizationヘッダーを転送してください。 - 別のマシン上にあるロードバランサーまたはゲートウェイの背後では、
--transport httpsを使用してください(自己署名証明書でもかまいません)。ロードバランサーがHostとして送信するホスト名を--public-nameに指定し、Authorizationを転送するようにしてください。 ヘルスプローブにはGET /healthzを使用できます。トークンは不要で、{"status": "ok"}のみを返します (vmware-policy ≥ 1.23.0)。 - 各リクエストに
traceparentまたはX-Request-IDを付けると、監査ログの行に保存されます。vmware-audit log --correlation-id IDを実行すると、1 つのプラットフォームリクエストに関連する呼び出しを検索できます。 - 監査ログでは、各呼び出し元が
token:<name>として記録されます。呼び出しは同時に実行され、同じターゲットに対しても並行します。サーバーはターゲットごとに最大VMWARE_MCP_POOL_SIZE件(デフォルトは 2)のセッションを保持します。各セッションはそのターゲットへのログインであり、空きセッションを待つ時間は最大 300 秒です(vmware-policy ≥ 1.22.0)。 - エンドポイントに接続できる人は誰でも、このサーバーのアカウントで操作できます。 トークンは呼び出し元を識別しますが、プラットフォーム上の権限は付与しません。権限レベルごとにエンドポイントを 1 つ実行してください。
vmware-storage access-infoを実行すると、そのアカウントと実行可能な操作を確認できます。 - 1 つのエンドポイントを複数の人やロールで使用する場合:
vmware-audit roles enableを 1 回実行してから、各トークンにロールを割り当てます(vmware-audit token create NAME --role reader、またはツールとターゲットを指定したroles.yaml内のロールを使用します。vmware-policy ≥ 1.24.0)。ロールは、このエンドポイントでトークンが呼び出せるものを制限します。アカウントの権限を超える権限は付与できません。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 サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。