mcpField
V
VMware VDI (Horizon)

VMware VDI (Horizon)

ローカル
github.com/vmware-skillsクラウド・インフラ1今日更新

VMware VDI (Horizon) について

VMware VDI (Horizon)は、VMwareまたはOmnissa Horizon VDIを管理するヘルプデスクや運用担当者向けのMCPサーバー兼CLIです。プール、セッション、マシン、イメージ、イベントを扱い、書き込み操作は影響範囲を事前表示して監査記録に残します。

主な機能

  1. 01プール、ファーム、セッション、マシンの確認
  2. 02Horizonイベント、ヘルス、統計の確認
  3. 03エンタイトルメントとデスクトッププール状態の管理
  4. 04ログオフ、切断、メッセージ送信、リセット
  5. 05書き込み操作の影響確認と監査

活用シーン

  1. 01ユーザーの停止したデスクトップセッションを特定
  2. 02プールの利用状況とVDIのヘルスを確認
  3. 03プロファイル解放のためにセッションをログオフ
  4. 04デスクトッププールへのイメージ配信を計画・追跡

MCP 対応

Horizon 8 Connection Server REST APIを通じて、VDIの監視と運用に使う27個のツールを公開します。書き込みには明示的な確認が必要で、変更前に影響範囲を提示します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"vmware-skills-vmware-vdi": {
"command": "uvx",
"args": [
"vmware-vdi"
],
"env": {
"VMWARE_VDI_CONFIG": "<VMWARE_VDI_CONFIG>"
}
}
}
}
起動コマンドuvx vmware-vdi
設定が必要な環境変数
VMWARE_VDI_CONFIGPath to the config file. Defaults to ~/.vmware-vdi/config.yaml.

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypivmware-vdi2.4.1

ツール

27

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
limitintegerいいえページサイズ(デフォルトは 50)。
offsetintegerいいえページオフセット。
targetanyいいえ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 スキルファミリーの一部です。必要なモジュールをインストールしてください。

リモートアクセス(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 を参照してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。