mcpField
P
Proxmox VE MCP Server

Proxmox VE MCP Server

ローカル
github.com/Samik081クラウド・インフラ264 週間前に更新

Proxmox VE MCP Server について

MCP PVE は、Cursor、Claude Code、Claude Desktop から Proxmox VE の仮想マシン、コンテナ、ストレージ、ネットワーク、クラスターを管理するための MCP サーバーです。3段階のアクセスティアと、カテゴリによるツールの絞り込みに対応しています。

主な機能

  1. 01Proxmox VE REST API を対象とする122のツール
  2. 02read-only、read-execute、full の3段階のアクセス権限
  3. 03PVE_CATEGORIES によるカテゴリ単位のフィルタリング
  4. 04stdio と Streamable HTTP のトランスポート
  5. 05linux/amd64 と linux/arm64 向けの Docker イメージ

活用シーン

  1. 01AI アシスタントを通じたノード、VM、コンテナの状態確認
  2. 02read-only 権限による Proxmox 環境の安全な閲覧
  3. 03リモートの MCP クライアント向けの共有 HTTP エンドポイントの運用

MCP 対応

本プロジェクトは MCP サーバーであり、Proxmox VE REST API による VM、コンテナ、ストレージの操作を MCP クライアントにツールとして公開します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"samik081-mcp-pve": {
"command": "npx",
"args": [
"-y",
"@samik081/mcp-pve"
],
"env": {
"PVE_BASE_URL": "<PVE_BASE_URL>",
"PVE_TOKEN_ID": "<PVE_TOKEN_ID>",
"PVE_TOKEN_SECRET": "<PVE_TOKEN_SECRET>"
}
}
}
}
起動コマンドnpx -y @samik081/mcp-pve
設定が必要な環境変数
PVE_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 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@samik081/mcp-pve0.9.0
ocighcr.io/samik081/mcp-pve:0.9.0

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

npm version Docker image License: MIT Node.js Version

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-execute77読み取りと実行――リソースの作成・削除はできません
read-only55読み取り専用――状態を変更せずに安全に調査できます

ティアの詳細:

  • 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いいえfullread-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いいえ3000HTTP サーバーのポート(MCP_TRANSPORT=http の場合のみ使用)
MCP_HOSTいいえ0.0.0.0HTTP サーバーのバインドアドレス(MCP_TRANSPORT=http の場合のみ使用)
MCP_SESSION_IDLE_TIMEOUTいいえ1800HTTP セッションを閉じてメモリを解放するまでの非アクティブ時間(秒)。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-onlyread-only, idempotent
pve_get_node_statusノードの詳細なステータス(CPU、メモリ、稼働時間、負荷)を取得read-onlyread-only, idempotent
pve_get_node_rrddata指定期間のノード RRD 統計(CPU、IO 待機、負荷、メモリ、ネットワーク。ゲストの rrddata と同じコンパクトなバケット形式の出力)を取得read-onlyread-only, idempotent
pve_get_node_versionノードの PVE バージョン情報を取得read-onlyread-only, idempotent
pve_get_node_dnsノードの DNS 設定を取得read-onlyread-only, idempotent
pve_get_node_timeノードの時刻とタイムゾーン情報を取得read-onlyread-only, idempotent
pve_get_node_syslogノードのシステムログエントリを取得read-onlyread-only, idempotent
pve_list_node_servicesノード上のすべてのシステムサービスを一覧表示read-onlyread-only, idempotent
pve_manage_node_serviceノードのサービスを起動、停止、再起動、または再読み込みread-executedestructive
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_statusHA マネージャーの状態を取得します読み取り専用読み取り専用、冪等
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_guestsVM /コンテナーをターゲットノードに一括移行します(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_aclACL 権限を付与または取り消しますフル破壊的、冪等
pve_create_user_tokenAPI トークンを作成します(シークレットは一度だけ表示されます)フル—
pve_update_user_tokenAPI トークンのコメント、有効期限、または 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_statusUPID でタスクのステータスを取得します読み取り専用読み取り専用、冪等
pve_get_task_logUPID でタスクのログ出力を取得します読み取り専用読み取り専用、冪等
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

ライセンス

MIT

コメント

MCP は初めてですか?

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

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