VMware VDI (Horizon) について
VMware VDI (Horizon)は、VMwareまたはOmnissa Horizon VDIを管理するヘルプデスクや運用担当者向けのMCPサーバー兼CLIです。プール、セッション、マシン、イメージ、イベントを扱い、書き込み操作は影響範囲を事前表示して監査記録に残します。
主な機能
- 01プール、ファーム、セッション、マシンの確認
- 02Horizonイベント、ヘルス、統計の確認
- 03エンタイトルメントとデスクトッププール状態の管理
- 04ログオフ、切断、メッセージ送信、リセット
- 05書き込み操作の影響確認と監査
活用シーン
- 01ユーザーの停止したデスクトップセッションを特定
- 02プールの利用状況とVDIのヘルスを確認
- 03プロファイル解放のためにセッションをログオフ
- 04デスクトッププールへのイメージ配信を計画・追跡
MCP 対応
Horizon 8 Connection Server REST APIを通じて、VDIの監視と運用に使う27個のツールを公開します。書き込みには明示的な確認が必要で、変更前に影響範囲を提示します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
27掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| limit | integer | いいえ | ページサイズ(デフォルトは 50)。 |
| offset | integer | いいえ | ページオフセット。 |
| target | any | いいえ | config.yaml の Horizon ターゲット。省略するとデフォルトが使用されます。 |
詳細
VMware VDI(Horizon)
VMware/Omnissa Horizon VDI の AI を活用したインテリジェントな運用管理 — デスクトッププール、RDS ファーム、公開アプリ、ユーザーセッション、デスクトップマシン、エンタイトルメント、インスタントクローンイメージ、Horizon のイベント/健全性/統計情報を、Horizon 8 Connection Server REST API 経由で管理します。MCP サーバー(AI エージェント向け)と CLI(ヘルプデスクおよびスクリプト向け)の両方を提供します。 VMware スキルファミリーの一部です。
免責事項:コミュニティが保守するオープンソースプロジェクトであり、VMware, Inc.、Broadcom Inc.、Omnissa, LLC. とは提携しておらず、推奨や後援も受けていません。「VMware」、「Horizon」、「Omnissa」は、それぞれの所有者の商標です。ソースコードは MIT ライセンスの下で公開されており、誰でも監査できます。
ステータス:v1.0.0(ベータ版)。 REST エンドポイントは公式の Horizon Server API に対して検証済みです。 GET レスポンスのフィールド投影は防御的に実装されており、稼働中の Connection Server での検証は保留中です (フィールド名が一致しない場合は、クラッシュではなく空の結果が返されます。詳しくはベータ版に関する注記を参照してください)。
2.0 へのアップグレード
2.0 では 27 個すべての MCP ツールの名前を変更し、すべての名前が動詞で始まるようになりました(例:ad_user_search → search_ad_users、app_pool_list → list_app_pools、entitlement_add → add_entitlement)。旧名から新名への対応表はRELEASE_NOTES.mdにあります。その他の変更はありません。ツール、パラメーター、安全ゲート、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-vdi が必要な理由
他の VMware ファミリーのスキルは、いずれも vСenter VM までで止まります。Horizon のデスクトッププールは、これらの VM 上で稼働します。そのため、vmware-aiops では基盤となる VM をリセットできますが、ユーザーセッションの確認、ユーザーのログオフ、プールの無効化、ゴールデンイメージの配信はできません。vmware-vdi は、「故障したデスクトップで動けなくなっているのは誰か」、「プロファイルのロックを解除するために、このユーザーをログオフさせる」、「このプールでプロビジョニングできないのはなぜか」、「今夜 Finance にパッチ適用済みのイメージを配信する」といった、VDI 運用におけるまさにその日々の課題を、ファミリー共通のガバナンスに基づく運用ハーネスで解決します。すべての書き込み操作は監査され、影響範囲が事前に表示され、Horizon アカウント自身の RBAC ロールによって認可されます。
機能 — MCP ツール 27 個(読み取り 16 個/書き込み 11 個)
| カテゴリ | ツール |
|---|---|
| 監視 | ヘルスサマリー · セッションの一覧/取得 · マシンの一覧/取得 · イベント一覧 |
| 統計 | セッション同時実行数の統計 · プールごとの使用率 |
| 管理 | プールの一覧/取得 · ファーム一覧 · アプリケーションプール一覧 · エンタイトルメント一覧 · イメージ一覧 · AD 検索 · プールの有効化/無効化 · エンタイトルメントの追加/削除 |
| 運用アクション | セッションのログオフ/切断/メッセージ送信 · マシンのリセット/メンテナンス/削除 |
| タスク | タスクの状態 · イメージのプッシュ · タスクのキャンセル |
読み取り操作は厳密に非破壊的です。書き込み操作では影響範囲を事前表示し、CLI で 2 回確認したうえで、~/.vmware/audit.db に監査ログが記録されます。push_desktop_pool_image はプール内のすべてのデスクトップを再作成します。これはこのツール群で単一の呼び出しによる最大の影響範囲であり、プレビューでは確認前に、影響を受けるデスクトップ数とセッション中のデスクトップ数に加えて、occupancy も表示されます。これらの数を信頼できる場合は determined、どのプールまたはファームにも紐付けられないセッションが存在する場合は unknown です。unknown の場合、未検証のゼロを報告するのではなく、確認を拒否します。上書きするには --acknowledge-unknown-occupancy が必要で、その操作は監査レコードに記録されます。デスクトッププールが特定されないマシンがある場合、デスクトップ数は下限(「少なくとも N 台」)となり、上書きなしでは確認を拒否します。
MCP では、確認が必要なすべての書き込みで confirm(デフォルトは false)を指定します。これを指定しない呼び出しは blast_radius を返します。内容は対象の識別情報、数、最大 20 件の識別子、blockers、unmeasured で、何も変更しません。実行結果にも同じ辞書が含まれます。エージェントはこれをユーザーに提示し、ユーザーの同意を得てから confirm=true を渡してください。影響範囲の判断に必要な情報(マシンの状態、セッションのユーザー、タスクの種類または状態、プールの有効化フラグ、プールに現在付与されているエンタイトルメントなど)を読み取れなかった場合、確認は拒否され、確認すべき項目を示すメッセージが返されます。
クイックスタート
uv tool install vmware-vdi
vmware-vdi init # friendly wizard: connect to a Connection Server + discover your pools
vmware-vdi doctor # verify config / credentials / connectivity
vmware-vdi health # one-glance VDI health
vmware-vdi init は、Connection Server のホスト、管理者ユーザー名、AD ドメイン、パスワードの入力を求めます。~/.vmware-vdi/config.yaml と 0600 の .env(パスワードは難読化)を書き込み、ログインをテストします。成功すると、次に試すコマンドとともに、プール、マシン、セッションを検出します。
ワークフローの例
ヘルプデスク — ユーザーのデスクトップが応答しない
vmware-vdi session list --user alice
vmware-vdi machine list --state AGENT_UNREACHABLE
vmware-vdi session logoff --user alice --dry-run # preview which sessions
vmware-vdi session logoff --user alice # double-confirm, then logs off + audits
パッチ適用の夜 — 新しいゴールデンイメージをプッシュ
vmware-vdi image list
vmware-vdi pool push-image --id pool-fin --dry-run # BLAST RADIUS: N desktops, M logged-in users
vmware-vdi pool push-image --id pool-fin # double-confirm; returns a task
vmware-vdi task status --pool pool-fin # track progress
MCP サーバー
{
"mcpServers": {
"vmware-vdi": {
"command": "vmware-vdi",
"args": ["mcp"],
"env": { "VMWARE_VDI_CONFIG": "~/.vmware-vdi/config.yaml" }
}
}
}
インストール済みの vmware-vdi mcp コンソールスクリプトを使うと、(uvx ではなく)起動のたびに PyPI で依存関係を再解決する必要がありません。エンタープライズ向け TLS プロキシ環境では特に重要です。
対応バージョン
- VMware Horizon 8.x(主な対象)— Connection Server REST API
/rest/v1。 - 最新の Omnissa Horizon(2406/2412 以降)— 同じ
/rest/v1系統。
セキュリティ
- 認可には Horizon RBAC を使用します。 スキルは読み取りと書き込みを制限しません。対象を読み取り専用の Horizon 管理者ロールに設定すると、すべての書き込みが Connection Server によって拒否され、回避できません。
- 認証情報は
~/.vmware-vdi/.env(0600、保存時はb64:で難読化)にのみ保存されます。設定ファイルにはホスト/ユーザー名/ドメインのみが保存されます。真の機密性を確保するには、シークレットマネージャーからVMWARE_VDI_<TARGET>_PASSWORDを注入してください。 - TLS 検証はデフォルトで有効です。Connection Server からのすべてのテキストに対し、プロンプトインジェクション対策として
sanitize()を適用します。 - 設定済みの Connection Server 以外への外部通信はありません。Webhook もテレメトリもありません。
SECURITY.md と skills/vmware-vdi/references/setup-guide.md を参照してください。
ベータ版に関する注意
REST エンドポイントは、公式の Horizon Server API 操作インデックスに照らして検証済みです。GET レスポンスの
フィールド名(および一部の書き込みボディ)は、フェイルセーフな実装(フォールバック付きの .get())になっており、稼働中の Connection Server での検証は
未完了です。フィールド名が一致しない場合、リストはクラッシュせず空になります。Horizon で初めて実際に使用する際は、vmware-vdi init を実行して、セッション/マシン/プールの投影内容を確認してください。投影内容が空に見える場合は、生の *_get 出力を添えてイシューを報告してください。品質:回帰テスト 32 件、ruff のチェックに合格、bandit 0、ツールのエンドポイントは検証済みの仕様に固定されています。
関連スキル
VMware スキルファミリーの一部です。必要なモジュールをインストールしてください。
- vmware-aiops — デスクトップを支える vCenter VM(電源、スナップショット、クローン、移行)
- vmware-monitor — 読み取り専用の vSphere 監視
- vmware-nsx-security — デスクトップネットワークのマイクロセグメンテーション
- vmware-aria · vmware-nsx · vmware-storage · vmware-vks · vmware-avi · vmware-harden
リモートアクセス(HTTPS)とツールの制限
デフォルトでは、vmware-vdi 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-vdi 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-vdi https://mcp.example.com:8443/mcp \
--header "Authorization: Bearer $VMWARE_MCP_TOKEN"
{
"mcpServers": {
"vmware-vdi": {
"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を転送するよう設定してください。ヘルスチェックには、トークン不要で{"status": "ok"}のみを返すGET /healthzを使用できます (vmware-policy ≥ 1.23.0)。 - リクエストごとに
traceparentまたはX-Request-IDを送信すると、監査ログの行に保存されます。vmware-audit log --correlation-id IDを実行すると、1 つのプラットフォームリクエストに関連する呼び出しを確認できます。 - 監査ログでは、各呼び出し元が
token:<name>として記録されます。呼び出しは、ターゲットの有無にかかわらず並行して実行されます。各ターゲットは最大VMWARE_MCP_POOL_SIZE個のセッション(デフォルトは 2)を保持し、各セッションはターゲットへのログインです。すべてのセッションが使用中の場合、呼び出しは最大 300 秒間、空きを待ちます。 - このエンドポイントにアクセスできる人は全員、このサーバーのアカウントで操作できます。 トークンは呼び出し元を識別しますが、プラットフォーム上の権限を付与するものではありません。権限レベルごとにエンドポイントを 1 つ実行してください。
- 1 つのエンドポイントで複数のユーザーやロールに対応する場合:
vmware-audit roles enableを 1 回実行してから、各トークンにロールを割り当ててください(vmware-audit token create NAME --role reader、またはツールとターゲットを指定したroles.yamlのロール。vmware-policy ≥ 1.24.0)。ロールは、このエンドポイントでトークンが呼び出せる内容を制限します。アカウントが持つ権限を超える権限を付与することはできません。vmware-policy の README の「Roles for network callers」を参照してください。
読み取りツールと、選択した書き込みツールのみを提供します:
vmware-vdi mcp --expose read --allow-write add_entitlement
# or: VMWARE_VDI_MCP_EXPOSE=read VMWARE_VDI_MCP_ALLOW_WRITE=add_entitlement vmware-vdi mcp
提供されないツールは、クライアントのツール一覧に表示されません。不正な値または不明な書き込みツールがある場合、サーバーは停止します (終了コード 2)。これはクライアントに提供するツールを制限するものであり、認可ではありません。そのため、アカウント自体にも最小権限を設定してください。
詳細:skills/vmware-vdi/references/setup-guide.md(「Serving MCP over HTTPS」、「Limiting which tools are offered」)。
ライセンス
MIT — LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。