Proxmox VE MCP Server について
MCP PVE は、Cursor、Claude Code、Claude Desktop から Proxmox VE の仮想マシン、コンテナ、ストレージ、ネットワーク、クラスターを管理するための MCP サーバーです。3段階のアクセスティアと、カテゴリによるツールの絞り込みに対応しています。
主な機能
- 01Proxmox VE REST API を対象とする122のツール
- 02read-only、read-execute、full の3段階のアクセス権限
- 03PVE_CATEGORIES によるカテゴリ単位のフィルタリング
- 04stdio と Streamable HTTP のトランスポート
- 05linux/amd64 と linux/arm64 向けの Docker イメージ
活用シーン
- 01AI アシスタントを通じたノード、VM、コンテナの状態確認
- 02read-only 権限による Proxmox 環境の安全な閲覧
- 03リモートの MCP クライアント向けの共有 HTTP エンドポイントの運用
MCP 対応
本プロジェクトは MCP サーバーであり、Proxmox VE REST API による VM、コンテナ、ストレージの操作を MCP クライアントにツールとして公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y @samik081/mcp-pvePVE_BASE_URLURL of the Proxmox VE instance (e.g. https://pve.example.com:8006)PVE_TOKEN_IDシークレットProxmox VE API token ID (e.g. user@pam!token-name)PVE_TOKEN_SECRETシークレットProxmox VE API token secretローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP PVE
Proxmox VE 用の MCP サーバーです。Cursor、Claude Code、Claude Desktop から自然言語で仮想マシン、コンテナ、ストレージ、ネットワーク、クラスターを管理できます。
特長
- Proxmox VE REST API をカバーする 12 カテゴリ、122 個のツール
- きめ細かな制御が可能な 3 つのアクセスティア(
read-only、read-execute、full) PVE_CATEGORIESによるカテゴリフィルタリングで、必要なツールだけを公開- HTTP 依存関係なし――ネイティブの
fetchを使用(Node 22 以降) PVE_VERIFY_SSL=falseによる自己署名証明書のサポート- GHCR で
linux/amd64とlinux/arm64向けの Docker イメージを提供 - Streamable HTTP プロトコルを使用した HTTP トランスポート(
MCP_TRANSPORT=http)による リモート MCP - 完全な型安全性を備えた TypeScript/ESM
API 互換性
Proxmox VE 9.2.4 でテスト済みです。
クイックスタート
npx でサーバーを直接実行します。
PVE_BASE_URL="https://pve.example.com:8006" \
PVE_TOKEN_ID="root@pam!mcp" \
PVE_TOKEN_SECRET="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" \
npx -y @samik081/mcp-pve
サーバーは起動時に PVE への接続を検証し、認証情報が不足しているか無効な場合は、わかりやすいエラーを表示してすぐに終了します。
Docker
Docker で実行します(stdio トランスポート。npx と同じです)。
docker run --rm -i \
-e PVE_BASE_URL=https://pve.example.com:8006 \
-e PVE_TOKEN_ID=root@pam!mcp \
-e PVE_TOKEN_SECRET=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
-e PVE_VERIFY_SSL=false \
ghcr.io/samik081/mcp-pve
HTTP トランスポートを使用してリモート MCP サーバーとして実行するには、次のようにします。
docker run -d -p 3000:3000 \
-e MCP_TRANSPORT=http \
-e PVE_BASE_URL=https://pve.example.com:8006 \
-e PVE_TOKEN_ID=root@pam!mcp \
-e PVE_TOKEN_SECRET=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
-e PVE_VERIFY_SSL=false \
ghcr.io/samik081/mcp-pve
MCP エンドポイントは http://localhost:3000、ヘルスチェックは http://localhost:3000/health で利用できます。
設定
Claude Code CLI(推奨):
# Using npx
claude mcp add --transport stdio pve \
--env PVE_BASE_URL=https://pve.example.com:8006 \
--env PVE_TOKEN_ID=root@pam!mcp \
--env PVE_TOKEN_SECRET=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
--env PVE_VERIFY_SSL=false \
-- npx -y @samik081/mcp-pve
# Using Docker
claude mcp add --transport stdio pve \
--env PVE_BASE_URL=https://pve.example.com:8006 \
--env PVE_TOKEN_ID=root@pam!mcp \
--env PVE_TOKEN_SECRET=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
--env PVE_VERIFY_SSL=false \
-- docker run --rm -i ghcr.io/samik081/mcp-pve
# Using remote HTTP (connect to a running Docker container or HTTP server)
claude mcp add --transport http pve http://localhost:3000
JSON 設定(Claude Code の .mcp.json、Claude Desktop の claude_desktop_config.json、Cursor の .cursor/mcp.json で使用できます):
{
"mcpServers": {
"pve": {
"command": "npx",
"args": ["-y", "@samik081/mcp-pve"],
"env": {
"PVE_BASE_URL": "https://pve.example.com:8006",
"PVE_TOKEN_ID": "root@pam!mcp",
"PVE_TOKEN_SECRET": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"PVE_VERIFY_SSL": "false"
}
}
}
}
Docker(stdio):
{
"mcpServers": {
"pve": {
"command": "docker",
"args": ["run", "--rm", "-i",
"-e", "PVE_BASE_URL=https://pve.example.com:8006",
"-e", "PVE_TOKEN_ID=root@pam!mcp",
"-e", "PVE_TOKEN_SECRET=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"-e", "PVE_VERIFY_SSL=false",
"ghcr.io/samik081/mcp-pve"
]
}
}
}
リモート MCP(実行中の Docker コンテナまたは HTTP サーバーに接続):
{
"mcpServers": {
"pve": {
"type": "streamable-http",
"url": "http://localhost:3000"
}
}
}
アクセスティア
PVE_ACCESS_TIER 環境変数を使用して、利用可能なツールを制御します。
| ティア | ツール数 | 説明 |
|---|---|---|
full(デフォルト) | 122 | 読み取り、実行、書き込み――すべてを制御できます |
read-execute | 77 | 読み取りと実行――リソースの作成・削除はできません |
read-only | 55 | 読み取り専用――状態を変更せずに安全に調査できます |
ティアの詳細:
- full:全 122 個のツールを利用できます。VM、コンテナ、ストレージ、ユーザー、ファイアウォールルールなどの作成・削除が含まれます。
- read-execute:77 個のツールを利用できます。すべての読み取りツールに加え、電源操作(起動、停止、移行)、ゲストの一括操作、OCI イメージのプル、バックアップの実行、タスク管理が含まれます。
- read-only:55 個のツールを利用できます。一覧表示、取得、ステータス、ログ関連のツールのみで、状態は変更できません。
選択したティアで利用できないツールは MCP サーバーに登録されません。AI ツールのツール一覧にも表示されないため、コンテキストをすっきり保てます。
環境変数
| 変数 | 必須 | デフォルト | 説明 |
|---|---|---|---|
PVE_BASE_URL | はい | -- | PVE インスタンスの URL(例:https://pve:8006) |
PVE_TOKEN_ID | はい | -- | API トークン ID(user@realm!tokenname) |
PVE_TOKEN_SECRET | はい | -- | API トークンの UUID シークレット |
PVE_ACCESS_TIER | いいえ | full | read-only、read-execute、または full |
PVE_CATEGORIES | いいえ | (すべて) | カンマ区切りのカテゴリ許可リスト |
PVE_TOOL_BLACKLIST | いいえ | (なし) | 除外するツール名のカンマ区切りリスト(例:pve_delete_qemu_vm) |
PVE_TOOL_WHITELIST | いいえ | (なし) | アクセス階層とカテゴリのフィルターを回避して、常に含めるツール名のカンマ区切りリスト |
PVE_VERIFY_SSL | いいえ | true | 自己署名証明書の場合は false に設定 |
DEBUG | いいえ | false | 標準エラー出力へのデバッグログを有効化 |
MCP_TRANSPORT | いいえ | stdio | トランスポートモード:stdio(デフォルト)または http |
MCP_PORT | いいえ | 3000 | HTTP サーバーのポート(MCP_TRANSPORT=http の場合のみ使用) |
MCP_HOST | いいえ | 0.0.0.0 | HTTP サーバーのバインドアドレス(MCP_TRANSPORT=http の場合のみ使用) |
MCP_SESSION_IDLE_TIMEOUT | いいえ | 1800 | HTTP セッションを閉じてメモリを解放するまでの非アクティブ時間(秒)。SSE ストリームが接続されているセッションは閉じられません。0 にすると無効になります。MCP_TRANSPORT=http の場合のみ使用 |
MCP_EXCLUDE_TOOL_TITLES | いいえ | false | ツールの登録時にタイトルを省略するには true に設定(トークンを節約) |
PVE UI の Datacenter > Permissions > API Tokens で API トークンを作成します。トークンにユーザーのすべての権限を引き継がせる場合は、「Privilege Separation」のチェックを外してください。
利用可能なカテゴリ
nodes、qemu、lxc、storage、cluster、access、pools、network、firewall、backup、tasks、ha
ツール
mcp-pve は、カテゴリ別に整理された 122 個のツールを提供します。各ツールの「アクセス」列には必要な最小アクセス階層が表示されます。read-only(すべての階層で利用可能)、read-execute(read-execute または full が必要)、full(full 階層のみ必要)のいずれかです。「ヒント」列にはツールの動作が表示されます。read-only(状態を変更しない)、destructive(既存の状態を変更する)、idempotent(2 回呼び出しても同じ結果になる)のいずれかです。
ノード(9 個のツール)
| ツール | 説明 | アクセス | ヒント |
|---|---|---|---|
pve_list_nodes | クラスター内のすべてのノードを一覧表示 | read-only | read-only, idempotent |
pve_get_node_status | ノードの詳細なステータス(CPU、メモリ、稼働時間、負荷)を取得 | read-only | read-only, idempotent |
pve_get_node_rrddata | 指定期間のノード RRD 統計(CPU、IO 待機、負荷、メモリ、ネットワーク。ゲストの rrddata と同じコンパクトなバケット形式の出力)を取得 | read-only | read-only, idempotent |
pve_get_node_version | ノードの PVE バージョン情報を取得 | read-only | read-only, idempotent |
pve_get_node_dns | ノードの DNS 設定を取得 | read-only | read-only, idempotent |
pve_get_node_time | ノードの時刻とタイムゾーン情報を取得 | read-only | read-only, idempotent |
pve_get_node_syslog | ノードのシステムログエントリを取得 | read-only | read-only, idempotent |
pve_list_node_services | ノード上のすべてのシステムサービスを一覧表示 | read-only | read-only, idempotent |
pve_manage_node_service | ノードのサービスを起動、停止、再起動、または再読み込み | read-execute | destructive |
QEMU 仮想マシン(20 個のツール)
| ツール | 説明 | アクセス | ヒント | |------|-------------|--------|-------| | `pve_list_qemu_vms` | ノード上のすべての QEMU VM を一覧表示します | 読み取り専用 | 読み取り専用、冪等 | | `pve_get_qemu_status` | VM の現在のステータス(CPU、メモリ、ディスク、ネットワーク)を取得します | 読み取り専用 | 読み取り専用、冪等 | | `pve_get_qemu_config` | VM の設定を取得します | 読み取り専用 | 読み取り専用、冪等 | | `pve_get_qemu_rrddata` | 指定期間の RRD 統計情報を取得します(コンパクトなテーブル形式。デフォルトは 60 バケット。`fields`、`cf`、`buckets`、`format: raw`) | 読み取り専用 | 読み取り専用、冪等 | | `pve_list_qemu_snapshots` | すべての VM スナップショットを一覧表示します | 読み取り専用 | 読み取り専用、冪等 | | `pve_start_qemu_vm` | VM を起動します | 読み取り・実行 | 破壊的 | | `pve_stop_qemu_vm` | VM を停止します(即時) | 読み取り・実行 | 破壊的 | | `pve_shutdown_qemu_vm` | VM を正常にシャットダウンします | 読み取り・実行 | 破壊的 | | `pve_reboot_qemu_vm` | VM を再起動します | 読み取り・実行 | 破壊的 | | `pve_suspend_qemu_vm` | VM を一時停止します | 読み取り・実行 | 破壊的 | | `pve_resume_qemu_vm` | 一時停止中の VM を再開します | 読み取り・実行 | 破壊的 | | `pve_reset_qemu_vm` | VM をリセットします(強制) | 読み取り・実行 | 破壊的 | | `pve_migrate_qemu_vm` | VM を別のノードに移行します | 読み取り・実行 | 破壊的 | | `pve_create_qemu_vm` | 新しい VM を作成します | フル | — | | `pve_delete_qemu_vm` | VM とそのすべてのデータを削除します | フル | 破壊的 | | `pve_update_qemu_config` | VM の設定を更新します | フル | 破壊的、冪等 | | `pve_clone_qemu_vm` | VM を複製します | フル | — | | `pve_create_qemu_snapshot` | VM スナップショットを作成します | フル | — | | `pve_delete_qemu_snapshot` | VM スナップショットを削除します | フル | 破壊的 | | `pve_rollback_qemu_snapshot` | VM をスナップショットにロールバックします | フル | 破壊的、冪等 |LXC コンテナ(18 ツール)
| ツール | 説明 | アクセス | ヒント |
|---|---|---|---|
pve_list_lxc_containers | ノード上のすべての LXC コンテナを一覧表示します | 読み取り専用 | 読み取り専用、冪等 |
pve_get_lxc_status | コンテナの現在のステータスを取得します | 読み取り専用 | 読み取り専用、冪等 |
pve_get_lxc_config | コンテナの設定を取得します | 読み取り専用 | 読み取り専用、冪等 |
pve_get_lxc_rrddata | 指定期間の RRD 統計情報を取得します(コンパクトなテーブル形式。デフォルトは 60 バケット。fields、cf、buckets、format: raw) | 読み取り専用 | 読み取り専用、冪等 |
pve_list_lxc_snapshots | すべてのコンテナスナップショットを一覧表示します | 読み取り専用 | 読み取り専用、冪等 |
pve_start_lxc_container | コンテナを起動します | 読み取り・実行 | 破壊的 |
pve_stop_lxc_container | コンテナを停止します(即時) | 読み取り・実行 | 破壊的 |
pve_shutdown_lxc_container | コンテナを正常にシャットダウンします | 読み取り・実行 | 破壊的 |
pve_reboot_lxc_container | コンテナを再起動します | 読み取り・実行 | 破壊的 |
pve_suspend_lxc_container | コンテナを一時停止(フリーズ)します | 読み取り・実行 | 破壊的 |
pve_resume_lxc_container | コンテナを再開(フリーズ解除)します | 読み取り・実行 | 破壊的 |
pve_create_lxc_container | 新しいコンテナを作成します | フル | — |
pve_delete_lxc_container | コンテナとそのすべてのデータを削除します | フル | 破壊的 |
pve_update_lxc_config | コンテナの設定を更新します | フル | 破壊的、冪等 |
pve_clone_lxc_container | コンテナを複製します | フル | — |
pve_create_lxc_snapshot | コンテナのスナップショットを作成します | フル | — |
pve_delete_lxc_snapshot | コンテナのスナップショットを削除します | フル | 破壊的 |
pve_rollback_lxc_snapshot | コンテナをスナップショットにロールバックします | フル | 破壊的、冪等 |
ストレージ(9 ツール)
| ツール | 説明 | アクセス | ヒント | |------|-------------|--------|-------| | `pve_list_storage` | 設定済みのストレージバックエンドをすべて一覧表示します | 読み取り専用 | 読み取り専用、冪等 | | `pve_get_storage_config` | ストレージバックエンドの設定を取得します | 読み取り専用 | 読み取り専用、冪等 | | `pve_list_node_storage` | ノードで利用可能なストレージを使用状況とともに一覧表示します | 読み取り専用 | 読み取り専用、冪等 | | `pve_get_storage_status` | ノードのストレージ状態と使用状況を取得します | 読み取り専用 | 読み取り専用、冪等 | | `pve_list_storage_content` | ストレージのコンテンツ(イメージ、ISO、バックアップ)を一覧表示します。`vmid` でフィルターするか、ゲストごとに `mode` の `latest` / `summary` を指定できます | 読み取り専用 | 読み取り専用、冪等 | | `pve_pull_oci_image` | OCI コンテナーイメージをストレージのテンプレートキャッシュに取り込みます(PVE 9.1+) | 読み取り・実行 | — | | `pve_create_storage` | 新しいストレージバックエンドを作成します | フル | — | | `pve_update_storage` | ストレージ設定を更新します | フル | 破壊的、冪等 | | `pve_delete_storage` | ストレージバックエンドを削除します | フル | 破壊的 |クラスター(13 ツール)
| ツール | 説明 | アクセス | ヒント |
|---|---|---|---|
pve_get_cluster_status | クラスターの状態(メンバーシップ、クォーラム)を取得します | 読み取り専用 | 読み取り専用、冪等 |
pve_list_cluster_resources | オプションのタイプフィルターを指定して、クラスターのリソースをすべて一覧表示します | 読み取り専用 | 読み取り専用、冪等 |
pve_get_next_vmid | 次に利用可能な VMID を取得します | 読み取り専用 | 読み取り専用、冪等 |
pve_get_cluster_log | 最近のクラスターのログエントリーを取得します | 読み取り専用 | 読み取り専用、冪等 |
pve_get_cluster_options | データセンターのオプションを取得します | 読み取り専用 | 読み取り専用、冪等 |
pve_list_cluster_backup_info | バックアップジョブの対象になっていないゲストを一覧表示します | 読み取り専用 | 読み取り専用、冪等 |
pve_get_cluster_ha_status | HA マネージャーの状態を取得します | 読み取り専用 | 読み取り専用、冪等 |
pve_list_cluster_replication | すべてのレプリケーションジョブを一覧表示します | 読み取り専用 | 読み取り専用、冪等 |
pve_bulk_start_guests | クラスター全体で VM /コンテナーを一括起動します(PVE 9.1+) | 読み取り・実行 | 破壊的 |
pve_bulk_shutdown_guests | クラスター全体で VM /コンテナーを一括シャットダウンします(PVE 9.1+) | 読み取り・実行 | 破壊的 |
pve_bulk_suspend_guests | クラスター全体で VM を一括サスペンドします(PVE 9.1+) | 読み取り・実行 | 破壊的 |
pve_bulk_migrate_guests | VM /コンテナーをターゲットノードに一括移行します(PVE 9.1+) | 読み取り・実行 | 破壊的 |
pve_update_cluster_options | データセンターのオプションを更新します | フル | 破壊的、冪等 |
アクセス制御(14 ツール)
| ツール | 説明 | アクセス | ヒント |
|---|---|---|---|
pve_list_users | ユーザーをすべて一覧表示します | 読み取り専用 | 読み取り専用、冪等 |
pve_get_user | ユーザーの詳細を取得します | 読み取り専用 | 読み取り専用、冪等 |
pve_list_roles | すべてのロールと権限を一覧表示します | 読み取り専用 | 読み取り専用、冪等 |
pve_list_groups | すべてのユーザーグループを一覧表示します | 読み取り専用 | 読み取り専用、冪等 |
pve_list_acls | すべての ACL エントリーを一覧表示します | 読み取り専用 | 読み取り専用、冪等 |
pve_list_domains | 認証ドメイン/レルムを一覧表示します | 読み取り専用 | 読み取り専用、冪等 |
pve_list_user_tokens | ユーザーの API トークンを一覧表示します | 読み取り専用 | 読み取り専用、冪等 |
pve_create_user | 新しいユーザーを作成します | フル | — |
pve_update_user | ユーザーのプロパティを更新します | フル | 破壊的、冪等 |
pve_delete_user | ユーザーを削除します | フル | 破壊的 |
pve_update_acl | ACL 権限を付与または取り消します | フル | 破壊的、冪等 |
pve_create_user_token | API トークンを作成します(シークレットは一度だけ表示されます) | フル | — |
pve_update_user_token | API トークンのコメント、有効期限、または privsep を更新します | フル | 破壊的、冪等 |
pve_delete_user_token | ユーザーの API トークンを削除します | フル | 破壊的 |
プール(5 ツール)
| ツール | 説明 | アクセス | ヒント | |------|-------------|--------|-------| | `pve_list_pools` | すべてのリソースプールを一覧表示します | 読み取り専用 | 読み取り専用、冪等 | | `pve_get_pool` | プールの詳細とメンバーを取得します | 読み取り専用 | 読み取り専用、冪等 | | `pve_create_pool` | リソースプールを作成します | フル | — | | `pve_update_pool` | プールのメンバーと設定を更新します | フル | 破壊的、冪等 | | `pve_delete_pool` | リソースプールを削除します | フル | 破壊的 |ネットワーク(5 ツール)
| ツール | 説明 | アクセス | ヒント |
|---|---|---|---|
pve_list_networks | ノード上のすべてのネットワークインターフェースを一覧表示します | 読み取り専用 | 読み取り専用、冪等 |
pve_get_network | ネットワークインターフェースの設定を取得します | 読み取り専用 | 読み取り専用、冪等 |
pve_create_network | ネットワークインターフェースを作成します | フル | — |
pve_update_network | ネットワークインターフェースの設定を更新します | フル | 破壊的、冪等 |
pve_delete_network | ネットワークインターフェースを削除します | フル | 破壊的 |
ファイアウォール(8 ツール)
| ツール | 説明 | アクセス | ヒント |
|---|---|---|---|
pve_get_firewall_options | クラスターファイアウォールのオプションを取得します | 読み取り専用 | 読み取り専用、冪等 |
pve_list_firewall_rules | クラスターファイアウォールのルールを一覧表示します | 読み取り専用 | 読み取り専用、冪等 |
pve_list_firewall_aliases | ファイアウォールのエイリアスを一覧表示します | 読み取り専用 | 読み取り専用、冪等 |
pve_list_firewall_ipsets | ファイアウォールの IP セットを一覧表示します | 読み取り専用 | 読み取り専用、冪等 |
pve_update_firewall_options | クラスターファイアウォールのオプションを更新します | フル | 破壊的、冪等 |
pve_create_firewall_rule | ファイアウォールルールを作成します | フル | — |
pve_update_firewall_rule | ファイアウォールルールを更新します | フル | 破壊的、冪等 |
pve_delete_firewall_rule | ファイアウォールルールを削除します | フル | 破壊的 |
バックアップ(5 ツール)
| ツール | 説明 | アクセス | ヒント |
|---|---|---|---|
pve_list_backup_jobs | スケジュールされたすべてのバックアップジョブを一覧表示します | 読み取り専用 | 読み取り専用、冪等 |
pve_get_backup_job | バックアップジョブの設定を取得します | 読み取り専用 | 読み取り専用、冪等 |
pve_run_backup | すぐにバックアップを実行します(vzdump) | 読み取り・実行 | — |
pve_create_backup_job | スケジュールされたバックアップジョブを作成します | フル | — |
pve_delete_backup_job | スケジュールされたバックアップジョブを削除します | フル | 破壊的 |
タスク(4 ツール)
| ツール | 説明 | アクセス | ヒント |
|---|---|---|---|
pve_list_tasks | ノード上の最近のタスクを一覧表示します | 読み取り専用 | 読み取り専用、冪等 |
pve_get_task_status | UPID でタスクのステータスを取得します | 読み取り専用 | 読み取り専用、冪等 |
pve_get_task_log | UPID でタスクのログ出力を取得します | 読み取り専用 | 読み取り専用、冪等 |
pve_stop_task | 実行中のタスクを停止します | 読み取り・実行 | 破壊的 |
高可用性(12 ツール)
| Tool | 説明 | アクセス | ヒント | |------|-------------|--------|-------| | `pve_list_ha_resources` | HA 管理対象のリソースをすべて一覧表示します | read-only | read-only, idempotent | | `pve_get_ha_resource` | リソースの HA 設定を取得します | read-only | read-only, idempotent | | `pve_list_ha_rules` | HA ルール(ノード/リソースのアフィニティ)を一覧表示します | read-only | read-only, idempotent | | `pve_get_ha_rule` | HA ルールの設定を取得します | read-only | read-only, idempotent | | `pve_create_ha_resource` | VM/コンテナーを HA 管理に追加します | full | — | | `pve_update_ha_resource` | HA リソースの設定を更新します | full | destructive, idempotent | | `pve_delete_ha_resource` | リソースを HA 管理から削除します | full | destructive | | `pve_create_ha_rule` | HA ルールを作成します | full | — | | `pve_update_ha_rule` | HA ルールを更新します | full | destructive, idempotent | | `pve_delete_ha_rule` | HA ルールを削除します | full | destructive | | `pve_disarm_ha` | メンテナンスのため HA スタックを停止します(PVE 9.2+) | full | destructive, idempotent | | `pve_arm_ha` | HA スタックを再起動します(PVE 9.2+) | full | destructive, idempotent |注: PVE 9 では HA グループは非推奨となり、HA ルールが推奨されています。PVE 9.1 では、HA ステータス出力からサービスごとの
groupフィールドが削除されました。
動作確認
MCP クライアントを設定したら、AI アシスタントに次のように尋ねます。
「Proxmox クラスターにはどのノードがありますか?」
接続が機能していれば、アシスタントは pve_list_nodes を呼び出し、現在のステータスとともにノードを返します。
使用例
設定後は、AI ツールに自然言語で質問できます。
-
「ノード pve1 上のすべての VM を一覧表示して」 --
pve_list_qemu_vmsを呼び出し、ステータス、CPU、メモリ使用量とともに VM を表示します。 -
「VM 100 のステータスは?」 --
pve_get_qemu_statusを呼び出し、リアルタイムのリソース使用状況を表示します。 -
「今日、VM 100 の CPU 使用率が上昇し始めたのはいつ?」 --
timeframe: "day"とfields: ["cpu"]を指定してpve_get_qemu_rrddataを呼び出します。約1,400件の生データサンプルの代わりに、60区分のコンパクトなテーブルが返されます。 -
「pve1 でコンテナー 200 を起動して」 --
pve_start_lxc_containerを呼び出してコンテナーを起動し、タスク UPID を返します。 -
「VM 100 のスナップショットを pre-upgrade という名前で作成して」 --
pve_create_qemu_snapshotを呼び出し、変更前にスナップショットを作成します。 -
「クラスターのリソースを表示して」 --
pve_list_cluster_resourcesを呼び出し、すべての VM、コンテナー、ストレージ、ノードを表示します。 -
「PBS 上の VM 100 の最新バックアップはいつ?」 --
vmid: 100とmode: "latest"を指定してpve_list_storage_contentを呼び出し、データストア内のすべてのスナップショットを列挙することなく、最新のバックアップを取得します。 -
「VM 100 をノード pve2 に移行して」 --
pve_migrate_qemu_vmを呼び出し、VM を別のノードにライブマイグレーションします。 -
「VM 103、104、105 を並列でシャットダウンして」 --
pve_bulk_shutdown_guestsを呼び出し、1回のリクエストでクラスター全体の複数のゲストをシャットダウンします。
トラブルシューティング
接続が拒否される/ECONNREFUSED
PVE_BASE_URL が正しく、ポート(デフォルト:8006)が含まれていることを確認してください。MCP サーバーの実行環境から PVE ホストに接続できることを確認してください。
SSL 証明書エラー
PVE インスタンスが自己署名証明書を使用している場合は、PVE_VERIFY_SSL=false を設定してください。これにより、すべてのリクエストで TLS 検証が無効になります。
ツールが表示されない
アクセスティアの設定を確認してください。read-only モードでは55個のツールが登録されます。read-execute モードでは77個のツールが登録されます。すべての122個のツールを使用するには、full を指定するか、PVE_ACCESS_TIER を省略してください。PVE_CATEGORIES を確認してください。指定したカテゴリのツールのみが登録されます。また、標準エラー出力を確認し、サーバーがエラーなく起動したことを確かめてください。
開発
# Install dependencies
npm install
# Build the project
npm run build
# Run in development mode (auto-reload)
npm run dev
# Open the MCP Inspector for interactive testing
npm run inspect
ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。