Skip to main content
Glama
michaelrice
by michaelrice

vcenter-mcp

Model Context Protocolサーバーであり、VMware vCenter / ESXiのVMライフサイクル管理ツールをClaude Codeやその他のMCPクライアントに公開します。pyVmomiをベースに構築されています。

機能

  • vCenterデータセンター(ホストごとにグループ化)またはスタンドアロンESXiホスト上のVMをリスト表示

  • VMの作成(ネットワークブート優先、シンまたはシックプロビジョニング、ESXiターゲット向けのネストされた仮想化オプション)

  • VMの電源オンおよびオフ

  • VMの削除(実行中の場合は先に電源をオフにし、その後ディスクから破棄)

検索には表示名またはmoref ID(例: vm-42)を使用できます。morefパスを使用するとインベントリスキャンをスキップできるため、大規模な環境では高速に動作します。

前提条件

  • Python 3.10以降

  • ネットワーク経由でアクセス可能なvCenter ServerまたはスタンドアロンESXiホスト

  • 実行したい操作に必要な権限を持つvSphereアカウント(list_vmsには読み取り専用で十分ですが、作成や削除には対応するVMおよびリソースプールの権限が必要です)

インストール

プロジェクトローカルのvirtualenvにインストールします。venvを使用することで、vcenter-mcpとその依存関係(特にpyVmomi)をシステムPythonから分離できます。

このリポジトリをクローンした場所から実行します:

python3 -m venv .venv
.venv/bin/pip install --upgrade pip
.venv/bin/pip install -e .

開発用(pytestもインストールされます):

.venv/bin/pip install -e ".[dev]"

このREADME全体を通して、コマンドは .venv/bin/... を使用しています。シェルごとに一度 source .venv/bin/activate を実行すれば、プレフィックスを省略しても同じ結果が得られます。

ターゲットの設定

venvのPythonを使用して対話型セットアップを実行します:

.venv/bin/python -m vcenter_mcp setup

以下の入力を求められます:

  1. ターゲット名(例: lab-vcenter) — 後でこのターゲットを参照するために使用します

  2. vCenter / ESXiのホスト名またはIPアドレス

  3. ユーザー名とパスワード

  4. ターゲットタイプ: vcenter または esxi

  5. (vCenterのみ)データセンター名とクラスター名

  6. データストア名

  7. 1つ以上のネットワークプロファイル(名前と1つ以上のポートグループ名の組み合わせ)

セットアップにより、~/.config/vcenter-mcp/config.json(モード 0600)に設定が書き込まれます。ターゲットを追加したり既存の設定を更新したりする場合は、いつでも再実行してください。

設定ファイルの形式

{
  "default_target": "lab-vcenter",
  "targets": {
    "lab-vcenter": {
      "host": "vcenter.lab.example.com",
      "user": "admin@vsphere.local",
      "password": "...",
      "type": "vcenter",
      "datacenter": "Lab DC",
      "cluster": "Lab Cluster",
      "datastore": "datastore1",
      "networks": {
        "standard": ["VM Network"],
        "secure-boot": ["pg-secure-1", "pg-secure-2"]
      },
      "default_network": "standard"
    }
  },
  "templates": {
    "esxi":   { "cpu": 4, "ram_mb": 16384, "disk_gb": 100, "disk_provisioning": "thin", "guest_id": "vmkernel7Guest", "vhv": true },
    "ubuntu": { "cpu": 2, "ram_mb": 4096,  "disk_gb": 40,  "disk_provisioning": "thin", "guest_id": "ubuntu64Guest",  "vhv": false },
    "rhel":   { "cpu": 2, "ram_mb": 4096,  "disk_gb": 40,  "disk_provisioning": "thin", "guest_id": "rhel9_64Guest",  "vhv": false }
  }
}

ネットワークプロファイルはポートグループのリストです。最初の項目がブートNICになります。独自のVMタイプを追加するには templates にエントリを追加してください。create_vm に渡される vm_type 文字列がこの辞書と照合されます。

Claude Codeへの登録

venvのPythonの絶対パスを使用してMCPサーバーを登録します。Claude Codeはアクティブ化されたvenvを継承しない新しいシェルでサーバーを起動するため、絶対パスが必要です。ここで単なる python を指定すると vcenter_mcp のインポートに失敗します。

VCENTER_MCP_DIR="$(pwd)"   # run this from the repo root, after install
claude mcp add --scope user vcenter -- "$VCENTER_MCP_DIR/.venv/bin/python" -m vcenter_mcp

または、使用したい絶対パスを直接指定します:

claude mcp add --scope user vcenter -- /absolute/path/to/vcenter-mcp/.venv/bin/python -m vcenter_mcp

読み取りツール(list_vms)はプロンプトなしで許可しても安全です。~/.claude/settings.jsonpermissions.allow に追加してください:

{
  "permissions": {
    "allow": [
      "mcp__vcenter__list_vms"
    ]
  }
}

破壊的なツール(create_vmpower_on_vmpower_off_vmdelete_vm)はデフォルトの許可リストには含まれていません。Claudeは呼び出しごとに確認を求めます。

ツール

ツール

機能

list_vms

ターゲット上のVMをリスト表示します。vCenterターゲットはデータセンター内のホストごとにグループ化され、ESXiターゲットはホスト上のすべてをリスト表示します。

create_vm

ネットワークブートを優先するVMを作成します。vm_type(テンプレート)を選択し、オプションでCPU/RAM/ディスクのオーバーライドや network_profile を指定できます。

power_on_vm

表示名またはmoref IDでVMの電源をオンにします。

power_off_vm

表示名またはmoref IDでVMの電源を強制的にオフにします。

delete_vm

VMを完全に削除します(実行中の場合は先に電源をオフにし、その後ディスクから破棄します)。

TLSに関する注意点

vcenter-mcp は検証なしのSSLコンテキストで接続します。これは、ラボ環境のvCenterでは自己署名証明書が非常に一般的であるため、govc やほとんどのpyVmomiサンプルコードでもデフォルトとなっている動作です。ターゲットが適切に署名された証明書を使用しており、厳密な検証が必要な場合は、src/vcenter_mcp/client.py 内の _ssl_context() を変更してください。

開発

python3 -m venv .venv
.venv/bin/pip install -e ".[dev]"
.venv/bin/pytest

テストはCI環境のPython 3.10、3.11、3.12で実行されます(.github/workflows/test.yml を参照)。

ライセンス

Apache-2.0

Install Server
A
license - permissive license
A
quality
C
maintenance

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/michaelrice/vcenter-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server