vcenter-mcp
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以下の入力を求められます:
ターゲット名(例:
lab-vcenter) — 後でこのターゲットを参照するために使用しますvCenter / ESXiのホスト名またはIPアドレス
ユーザー名とパスワード
ターゲットタイプ:
vcenterまたはesxi(vCenterのみ)データセンター名とクラスター名
データストア名
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.json の permissions.allow に追加してください:
{
"permissions": {
"allow": [
"mcp__vcenter__list_vms"
]
}
}破壊的なツール(create_vm、power_on_vm、power_off_vm、delete_vm)はデフォルトの許可リストには含まれていません。Claudeは呼び出しごとに確認を求めます。
ツール
ツール | 機能 |
| ターゲット上のVMをリスト表示します。vCenterターゲットはデータセンター内のホストごとにグループ化され、ESXiターゲットはホスト上のすべてをリスト表示します。 |
| ネットワークブートを優先するVMを作成します。 |
| 表示名またはmoref IDでVMの電源をオンにします。 |
| 表示名またはmoref IDで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 を参照)。
ライセンス
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