vsphere-mcp

vsphere-mcp

MCP server for VMware vSphere/vCenter operations, enabling natural language control of VMs, hosts, and infrastructure.

Category
访问服务器

README

vsphere-mcp

CI Python 3.11+ License: Apache 2.0

VMware vSphere / vCenter を AI コーディングツール(Claude Code、GitHub Copilot、Codex 等)から自然言語で操作するための MCP (Model Context Protocol) サーバーです。

注意: 開発・テストはすべて vcsim(vCenter Server Simulator)上で実施しています。商用 vSphere 環境への影響はありません。

機能一覧(全 657 ツール)

全ツールの詳細は docs/TOOLS.md を参照してください。

カテゴリ別サマリー

カテゴリ モジュール 読み取り 操作 合計
インベントリ inventory.py 18 - 18
電源操作 power.py - 6 6
スナップショット snapshot.py - 7 7
マイグレーション migration.py - 3 3
ライフサイクル lifecycle.py 2 11 13
リソース resources.py - 8 8
VM デバイス vm_devices.py 7 19 26
ホスト管理 host.py - 11 11
ホスト設定 host_config.py 15 18 33
ネットワーク networking.py 3 12 15
パフォーマンス performance.py 7 - 7
イベント・監視 events.py 8 - 8
ストレージ storage.py 8 13 21
バッチ操作 batch.py 1 4 5
ゲスト操作 guest.py 5 9 14
タグ・属性 tags.py 3 4 7
詳細設定 advanced_settings.py 2 2 4
vCenter 管理 vcenter_admin.py 6 8 14
クラスタ設定 cluster_config.py 7 18 25
フォルダ folders.py 1 5 6
DS ブラウザ datastore_browser.py 1 4 5
データセンター datacenter.py - 3 3
カスタマイズ customization.py 2 4 6
アラーム alarm.py - 4 4
vSphere タグ vsphere_tags.py 3 6 9
コンテンツライブラリ content_library.py 2 5 7
vApp vapp.py 1 3 4
スケジュールタスク scheduled_tasks.py 1 2 3
ホストプロファイル host_profile.py 2 - 2
ライセンス license.py 1 3 4
フォールトトレランス fault_tolerance.py 1 2 3
ストレージポリシー storage_policy.py 4 3 7
OVF/OVA ovf.py 2 3 5
vSAN vsan.py 5 4 9
vLCM パッチ管理 vlcm.py 5 3 8
VM 暗号化 encryption.py 4 3 7
証明書管理 certificate.py 4 4 8
NIOC nioc.py 2 3 5
インスタントクローン他 instant_clone.py 1 4 5
コンテンツライブラリ拡張 content_library_ext.py 3 5 8
vCenter サービス vcenter_services.py 6 4 10
PCI/vGPU pci_passthrough.py 5 4 9
DVS 高度機能 dvs_advanced.py 3 3 6
iSCSI 拡張 iscsi_config.py 1 4 5
Tanzu tanzu.py 4 3 7
VM モニタリング vm_monitoring.py 4 1 5
データストア拡張 datastore_ext.py 1 1 2
VM デバイス拡張 vm_devices_ext.py - 12 12
VM 操作拡張 vm_ops_ext.py - 11 11
クラスタ操作拡張 cluster_ops_ext.py - 12 12
ホスト操作拡張 host_ops_ext.py - 18 18
ネットワーク拡張 network_ext.py - 13 13
ストレージ操作拡張 storage_ops_ext.py - 8 8
セキュリティ・ID管理 security.py - 10 10
監視・診断・拡張管理 diagnostics.py 11 - 11
vApp 拡張 vapp_ext.py - 6 6
ゲスト操作拡張 guest_ext.py - 8 8
SDRS・コンピュートポリシー sdrs.py - 6 6
アプライアンスヘルス appliance_health.py 12 - 12
アプライアンス更新・ネットワーク appliance_update.py - 6 6
検索インデックス・その他 search_index.py 17 - 17
ESXi アカウント管理 esxi_accounts.py - 5 5
仮想ディスク管理 virtual_disk_mgr.py - 10 10
First Class Disk fcd.py - 10 10
VM メソッド拡張 vm_methods_ext.py - 6 6
ホストマネージャー拡張 host_mgr_ext.py - 10 10
vCenter REST 拡張 vcenter_rest_ext.py - 11 11
Trusted Infrastructure trusted_infra.py - 7 7
イベント・カスタマイズ拡張 event_ext.py - 13 13
VM ブート・Tools REST vm_boot_rest.py - 4 4
Namespace・互換性チェック namespace_compat.py 18 - 18
合計 219 438 657

操作ツール(438 個・confirm 必須)

すべての操作ツールは confirm=True を指定しない限り実行されず、確認プロンプトを返します。

クイックスタート

前提条件

  • Python 3.11 以上
  • uv(推奨)
  • Docker(vcsim を使ったローカル開発用)

1. vcsim の起動(開発用)

docker compose up -d

ポート 8989 で vCenter Server Simulator が起動し、データセンター・クラスター・ホスト・VM・データストアが事前作成されます。

2. インストール

# ソースから
git clone https://github.com/fukui-yuto/vsphere-mcp.git
cd vsphere-mcp
uv venv
uv pip install -e .

3. AI ツールへの登録

Claude Code

.claude/settings.json または .mcp.json に以下を追加します。

ローカル開発(vcsim)

{
  "mcpServers": {
    "vsphere-mcp": {
      "command": "uv",
      "args": ["run", "vsphere-mcp"],
      "env": {
        "VSPHERE_HOST": "localhost",
        "VSPHERE_PORT": "8989",
        "VSPHERE_USER": "user",
        "VSPHERE_PASSWORD": "pass",
        "VSPHERE_IGNORE_SSL": "true"
      }
    }
  }
}

本番 vCenter

{
  "mcpServers": {
    "vsphere-mcp": {
      "command": "uv",
      "args": ["run", "vsphere-mcp"],
      "env": {
        "VSPHERE_HOST": "vcenter.example.com",
        "VSPHERE_PORT": "443",
        "VSPHERE_USER": "administrator@vsphere.local",
        "VSPHERE_PASSWORD": "your-password"
      }
    }
  }
}

パスワードファイル(本番推奨)

{
  "mcpServers": {
    "vsphere-mcp": {
      "command": "uv",
      "args": ["run", "vsphere-mcp"],
      "env": {
        "VSPHERE_HOST": "vcenter.example.com",
        "VSPHERE_PORT": "443",
        "VSPHERE_USER": "administrator@vsphere.local",
        "VSPHERE_PASSWORD_FILE": "/run/secrets/vsphere_password"
      }
    }
  }
}

GitHub Copilot(VS Code)

プロジェクトルートに .vscode/mcp.json を作成します。

ローカル開発(vcsim)

{
  "servers": {
    "vsphere-mcp": {
      "command": "uv",
      "args": ["run", "vsphere-mcp"],
      "env": {
        "VSPHERE_HOST": "localhost",
        "VSPHERE_PORT": "8989",
        "VSPHERE_USER": "user",
        "VSPHERE_PASSWORD": "pass",
        "VSPHERE_IGNORE_SSL": "true"
      }
    }
  }
}

本番 vCenter

{
  "servers": {
    "vsphere-mcp": {
      "command": "uv",
      "args": ["run", "vsphere-mcp"],
      "env": {
        "VSPHERE_HOST": "vcenter.example.com",
        "VSPHERE_PORT": "443",
        "VSPHERE_USER": "administrator@vsphere.local",
        "VSPHERE_PASSWORD": "your-password"
      }
    }
  }
}

ヒント: VS Code のユーザー設定(settings.json)の mcp.servers に記述することも可能です。

OpenAI Codex CLI

プロジェクトルートに codex.json を作成します。

ローカル開発(vcsim)

{
  "mcpServers": {
    "vsphere-mcp": {
      "command": "uv",
      "args": ["run", "vsphere-mcp"],
      "env": {
        "VSPHERE_HOST": "localhost",
        "VSPHERE_PORT": "8989",
        "VSPHERE_USER": "user",
        "VSPHERE_PASSWORD": "pass",
        "VSPHERE_IGNORE_SSL": "true"
      }
    }
  }
}

本番 vCenter

{
  "mcpServers": {
    "vsphere-mcp": {
      "command": "uv",
      "args": ["run", "vsphere-mcp"],
      "env": {
        "VSPHERE_HOST": "vcenter.example.com",
        "VSPHERE_PORT": "443",
        "VSPHERE_USER": "administrator@vsphere.local",
        "VSPHERE_PASSWORD": "your-password"
      }
    }
  }
}

4. 利用例

登録後、自然言語で操作できます:

> クラスター内の全 VM を表示して

> VM "web-server-01" のステータスを確認して

> VM "dev-test-01" を起動して(confirm=True)

> 全データストアの空き容量を一覧表示して

> "db-server" のスナップショットを "before-upgrade" という名前で作成して

> "web-01" を "web-01-staging" としてクローンして

> "app-server" に 50GB のディスクを追加して

環境変数

変数名 デフォルト値 説明
VSPHERE_HOST localhost vCenter/ESXi のホスト名または IP
VSPHERE_PORT 443 vSphere API ポート
VSPHERE_USER administrator@vsphere.local ユーザー名
VSPHERE_PASSWORD (空) パスワード
VSPHERE_PASSWORD_FILE (空) パスワードファイルのパス(VSPHERE_PASSWORD の代替)
VSPHERE_IGNORE_SSL false SSL 証明書検証をスキップ
VSPHERE_RBAC_POLICY (空) RBAC ポリシー JSON ファイルのパス
VSPHERE_LANG en メッセージ言語(en / ja

SSL 設定

SSL 証明書の検証はデフォルトで有効です。自己署名証明書や開発環境の場合:

export VSPHERE_IGNORE_SSL=true

警告: 本番環境では SSL 検証を無効化しないでください。

安全設計

確認システム

すべての破壊的操作は 2 段階の確認パターンを使用します:

  1. 1 回目の呼び出しconfirm=True なし): 危険度付きのプレビューを返す
  2. 2 回目の呼び出しconfirm=True あり): 実際に操作を実行
# 1 回目 - 確認プロンプトを返す
power_off_vm(vm_name="web-01")
# -> {"status": "confirmation_required", "danger_level": "medium", ...}

# 2 回目 - 実行
power_off_vm(vm_name="web-01", confirm=True)
# -> {"status": "success", "vm_name": "web-01", "operation": "power_off"}

危険度レベル

レベル 説明
容易に取り消し可能 VM 起動、アノテーション設定
一時的な影響あり 電源 OFF、シャットダウン、再起動、スナップショット作成、リソース変更
大きな影響・取り消し困難 スナップショット復元/削除、vMotion、クローン、テンプレート展開、メンテナンスモード、一括操作、ゲストコマンド実行、詳細設定変更
重大 永久的なデータ損失の可能性 VM 削除、ホストシャットダウン/切断、データストアファイル削除

ログ

すべての操作は構造化 JSON 形式でログ記録されます:

{"event": "power_off_vm", "vm_name": "web-01", "level": "info", "timestamp": "2025-05-04T12:00:00Z", "duration_ms": 1234.5}

認証情報はログに一切含まれません(自動マスク処理)。

エラーハンドリング

接続エラーは診断しやすいように型で分類されます:

エラー型 原因 メッセージ例
VSphereAuthenticationError ユーザー名/パスワードが不正 Authentication failed for user 'admin' on vcenter:443
VSphereSSLError SSL 証明書検証失敗 SSL certificate verification failed ... Set VSPHERE_IGNORE_SSL=true
VSphereConnectionError ホスト到達不能・接続拒否 Cannot reach vSphere at vcenter:443

クライアントは一時的な接続障害時に自動リトライします(最大 3 回、2 秒間隔)。

開発

テスト実行(vcsim が必要)

docker compose up -d
uv run pytest tests/ -v

リント・フォーマット

uv run ruff check src/ tests/
uv run ruff format src/ tests/

プロジェクト構成

vsphere-mcp/
  pyproject.toml
  docker-compose.yml              # vcsim 起動用
  src/vsphere_mcp/
    server.py                     # MCP サーバーエントリポイント
    config.py                     # 環境変数による設定管理
    client.py                     # vSphere 接続(遅延初期化・自動再接続)
    logging.py                    # 構造化ログ(パスワードマスク付き)
    metrics.py                    # Prometheus メトリクス(オプション)
    rbac.py                       # RBAC ポリシーエンジン
    i18n.py                       # 国際化メッセージフレームワーク(en/ja)
    py.typed                      # 型情報マーカー
    tools/
      _base.py                    # require_confirm / handle_tool_errors デコレータ
      inventory.py                # インベントリ情報取得(18 個)
      power.py                    # 電源操作(6 個)
      snapshot.py                 # スナップショット管理(7 個)
      migration.py                # vMotion / Storage vMotion(3 個)
      lifecycle.py                # VM ライフサイクル(13 個)
      resources.py                # リソース変更: CPU/メモリ/ディスク/NIC/CD(8 個)
      vm_devices.py               # VM デバイス管理(26 個)
      host.py                     # ホスト管理(11 個)
      host_config.py              # ホスト設定(33 個)
      networking.py               # ネットワーク設定(15 個)
      performance.py              # パフォーマンスメトリクス(7 個)
      events.py                   # イベント・監視(8 個)
      storage.py                  # ストレージ(21 個)
      batch.py                    # バッチ操作(5 個)
      guest.py                    # ゲスト OS 操作(14 個)
      tags.py                     # タグ・属性(7 個)
      advanced_settings.py        # 詳細設定(4 個)
      vcenter_admin.py            # vCenter 管理(14 個)
      cluster_config.py           # クラスタ設定(25 個)
      folders.py                  # フォルダ管理(6 個)
      datastore_browser.py        # データストアブラウザ(5 個)
      datacenter.py               # データセンター管理(3 個)
      customization.py            # カスタマイズ仕様(6 個)
      alarm.py                    # アラーム管理(4 個)
      vsphere_tags.py             # vSphere タグ REST API(9 個)
      content_library.py          # コンテンツライブラリ(7 個)
      vapp.py                     # vApp ライフサイクル(4 個)
      scheduled_tasks.py          # スケジュールタスク(3 個)
      host_profile.py             # ホストプロファイル(2 個)
      license.py                  # ライセンス管理(4 個)
      fault_tolerance.py          # フォールトトレランス(3 個)
      storage_policy.py           # ストレージポリシー(7 個)
      ovf.py                      # OVF/OVA デプロイ(5 個)
      vsan.py                     # vSAN 管理(9 個)
      vlcm.py                     # vLCM パッチ管理(8 個)
      encryption.py               # VM 暗号化(7 個)
      certificate.py              # 証明書管理(8 個)
      nioc.py                     # NIOC(5 個)
      instant_clone.py            # インスタントクローン他(5 個)
      content_library_ext.py      # コンテンツライブラリ拡張(8 個)
      vcenter_services.py         # vCenter サービス(10 個)
      pci_passthrough.py          # PCI/vGPU パススルー(9 個)
      dvs_advanced.py             # DVS 高度機能(6 個)
      iscsi_config.py             # iSCSI 拡張(5 個)
      tanzu.py                    # Tanzu(7 個)
      vm_monitoring.py            # VM モニタリング(5 個)
      datastore_ext.py            # データストア拡張(2 個)
      vm_devices_ext.py           # VM デバイス拡張(12 個)
      vm_ops_ext.py               # VM 操作拡張(11 個)
      cluster_ops_ext.py          # クラスタ操作拡張(12 個)
      host_ops_ext.py             # ホスト操作拡張(18 個)
      network_ext.py              # ネットワーク拡張(13 個)
      storage_ops_ext.py          # ストレージ操作拡張(8 個)
      security.py                 # セキュリティ・ID管理(10 個)
      diagnostics.py              # 監視・診断・拡張管理(11 個)
      vapp_ext.py                 # vApp 拡張(6 個)
      guest_ext.py                # ゲスト操作拡張(8 個)
      sdrs.py                     # SDRS・コンピュートポリシー(6 個)
      appliance_health.py         # アプライアンスヘルス(12 個)
      appliance_update.py         # アプライアンス更新・ネットワーク(6 個)
      search_index.py             # 検索インデックス・その他(17 個)
      esxi_accounts.py            # ESXi アカウント管理(5 個)
      virtual_disk_mgr.py         # 仮想ディスク管理(10 個)
      fcd.py                      # First Class Disk(10 個)
      vm_methods_ext.py           # VM メソッド拡張(6 個)
      host_mgr_ext.py             # ホストマネージャー拡張(10 個)
      vcenter_rest_ext.py         # vCenter REST 拡張(11 個)
      trusted_infra.py            # Trusted Infrastructure(7 個)
      event_ext.py                # イベント・カスタマイズ拡張(13 個)
      vm_boot_rest.py             # VM ブート・Tools REST(4 個)
      namespace_compat.py         # Namespace・互換性チェック(18 個)
    utils/
      property_collector.py       # PropertyCollector による効率的プロパティ取得
  tests/                          # vcsim 対象の統合テスト
  docs/
    ARCHITECTURE.md               # アーキテクチャ設計書
    DESIGN_DECISIONS.md           # 設計判断記録 (ADR)
    CONTRIBUTING.md               # コントリビュートガイド
    SECURITY.md                   # セキュリティポリシー
    CHANGELOG.md                  # 変更履歴
    TOOLS.md                      # 全 657 ツール詳細一覧
  .github/
    workflows/ci.yml              # GitHub Actions CI
    dependabot.yml                # Dependabot 設定(pip / GitHub Actions)

高度な機能

SSE トランスポート

複数クライアントから同一サーバーを共有する場合、SSE トランスポートを使用できます:

vsphere-mcp --transport sse --port 8080

Prometheus メトリクス

オプションの依存パッケージをインストールすることで、Prometheus 形式のメトリクスエンドポイントを公開できます:

pip install vsphere-mcp[metrics]
vsphere-mcp --metrics-port 9090

RBAC(ロールベースアクセス制御)

VSPHERE_RBAC_POLICY 環境変数にポリシー JSON ファイルのパスを指定することで、ツールごとのアクセス制御を設定できます:

export VSPHERE_RBAC_POLICY=/path/to/policy.json

国際化(i18n)

VSPHERE_LANG 環境変数でメッセージ言語を切り替えられます(デフォルト: en):

export VSPHERE_LANG=ja

アーキテクチャ

Claude Code
    |  stdio(デフォルト)または HTTP/SSE
    v
vsphere-mcp サーバー(Python, FastMCP)
    |  pyVmomi(HTTPS)
    v
vCenter Server(本番)または vcsim(開発)
  • トランスポート: stdio(デフォルト、ローカル運用に最適)または SSE(複数クライアント共有用)
  • 接続: 初回ツール呼び出し時に遅延初期化、セッション切れ時に自動再接続
  • プロパティ取得: PropertyCollector による効率的な一括クエリ
  • 安全装置: require_confirm デコレータによる危険度別の確認システム
  • エラーハンドリング: 型付き例外(VSphereAuthenticationError, VSphereSSLError, VSphereConnectionError

既知の制限事項

  • vcsim と実機の差異: vcsim と本番 vCenter で一部 API の挙動が異なります。詳細は vcsim ドキュメントを参照してください。
  • ゲスト操作: shutdown_vmreboot_vmexecute_guest_commandlist_guest_processes はゲスト OS に VMware Tools がインストールされている必要があります。
  • vMotion: 本番環境では互換性のあるホスト、共有ストレージ、適切なネットワーク構成が必要です。

ライセンス

Apache License 2.0

コントリビュート

開発環境のセットアップと貢献の手順は docs/CONTRIBUTING.md を参照してください。

セキュリティ

セキュリティポリシーと脆弱性の報告方法は docs/SECURITY.md を参照してください。

変更履歴

リリース履歴は docs/CHANGELOG.md を参照してください。

設計ドキュメント

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选