proxmox-mcp
Proxmox-mcp
シンプルな Proxmox MCP
Proxmox VE を管理するための MCP サーバー
38 個のツール — ノード、QEMU VM、LXC コンテナ、ストレージ、クラスター、スナップショット。
なぜこれを使うのか?
単一イメージ、マルチアーキテクチャ —
docker run ghcr.io/akmalovaa/proxmox-mcp:latestを実行するだけで完了環境変数のみ — 設定ファイル、データベース、状態管理は不要
デフォルトで読み取り専用 — 破壊的な操作は明示的な
PROXMOX_RISK_LEVELによって制限小さなコードベース — Proxmoxer 上の純粋な stdio MCP。HTTP サーバー、認証レイヤー、余計な機能はなし
生の JSON 出力 — フォーマットや絵文字なし。LLM がクリーンなデータを取得可能
クイックスタート
イメージ: ghcr.io/akmalovaa/proxmox-mcp:latest (マルチアーキテクチャ: amd64 + arm64)。
1. シェルプロファイル (~/.zprofile, ~/.zshrc または ~/.bashrc) に認証情報をエクスポートします:
# base environment:
export PROXMOX_HOST=192.168.1.100
export PROXMOX_USER=root@pam
export PROXMOX_PASSWORD=your-password
# or use token auth (recommended):
export PROXMOX_TOKEN_NAME=mcp
export PROXMOX_TOKEN_VALUE=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
# optional:
export PROXMOX_RISK_LEVEL=readリロード: source ~/.zprofile (またはシェルを再起動)。
2. ~/.claude/settings.json (Claude Code) または claude_desktop_config.json (Claude Desktop) に追加します:
{
"mcpServers": {
"proxmox": {
"command": "docker",
"args": ["run", "-i", "--rm",
"-e", "PROXMOX_HOST",
"-e", "PROXMOX_USER",
"-e", "PROXMOX_PASSWORD",
"ghcr.io/akmalovaa/proxmox-mcp:latest"]
}
}
}またはトークン認証:
{
"mcpServers": {
"proxmox": {
"command": "docker",
"args": ["run", "-i", "--rm",
"-e", "PROXMOX_HOST",
"-e", "PROXMOX_USER",
"-e", "PROXMOX_TOKEN_NAME",
"-e", "PROXMOX_TOKEN_VALUE",
"ghcr.io/akmalovaa/proxmox-mcp:latest"]
}
}
}値なしで docker run -e VAR を実行すると、ホスト変数がそのまま渡されます。設定ファイルにシークレットを含める必要はありません。クライアントを再起動すると、38 個の Proxmox ツールが利用可能になります。
パスワード認証の場合は、トークン変数を PROXMOX_PASSWORD に置き換えてください。
注意: macOS 上の Claude Desktop は launchd 経由で起動されるため、
~/.zprofile/~/.zshrcを継承しません。エクスポートを~/.zshenvに記述するか、設定内のインライン"env": { ... }ブロックを使用してください。
設定
すべての設定は環境変数です。シェルプロファイルで設定するか、docker run -e にインラインで渡すか、MCP クライアントの env ブロックで宣言してください。
変数 | デフォルト | 説明 |
| — | Proxmox ホスト (IP またはホスト名) |
|
| API ユーザー |
認証 | — | |
|
| API ポート |
|
| TLS 証明書の検証 |
|
|
|
認証: トークン または パスワード
どちらか一方を選択してください。両方設定されている場合はトークンが優先されます。
トークン (推奨) — Proxmox UI で作成: データセンター → パーミッション → API トークン → 追加 (Privilege Separation のチェックを外す)。その後:
export PROXMOX_TOKEN_NAME=mcp
export PROXMOX_TOKEN_VALUE=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxパスワード (フォールバック):
export PROXMOX_PASSWORD=your-passwordリスクレベル
PROXMOX_RISK_LEVEL は破壊的な操作を制限します:
レベル | 追加される操作 |
| 読み取り専用ツール |
| + 起動 / 停止 / 再起動 / サスペンド / クローン / スナップショット作成 |
| + スナップショット削除 / スナップショットロールバック |
権限が必要な呼び出しはすべて stderr にログ記録されます (ALLOW / DENY + ツール + レベル)。
ツール
ノード (7)
ツール | 説明 |
| ステータス、CPU、メモリ、稼働時間を含む全クラスターノードの一覧 |
| 詳細なノードメトリクス (CPU、メモリ、ディスク、負荷、カーネル) |
| ノード上のネットワークインターフェース |
| ノード上の物理ディスク |
| ノード上の最近のタスク |
| UPID による特定のタスクのステータス |
| タスクのログ出力 |
QEMU VM (14)
ツール | レベル | 説明 |
| read | 全 VM の一覧 (ノードによるフィルタリング可) |
| read | 現在の VM ステータス (実行中/停止中、CPU、メモリ) |
| read | VM 設定 (ハードウェア、ディスク、ネットワーク) |
| read | VM の全スナップショットの一覧 |
| lifecycle | VM の起動 |
| lifecycle | VM の強制停止 |
| lifecycle | タイムアウト付きの安全な ACPI シャットダウン |
| lifecycle | ACPI 経由の再起動 |
| lifecycle | VM のサスペンド |
| lifecycle | サスペンドされた VM の再開 |
| lifecycle | フルクローンまたはリンククローン |
| lifecycle | スナップショットの作成 |
| all | スナップショットの削除 |
| all | スナップショットへのロールバック |
LXC コンテナ (11)
ツール | レベル | 説明 |
| read | 全 LXC コンテナの一覧 (ノードによるフィルタリング可) |
| read | 現在のコンテナステータス |
| read | コンテナ設定 |
| read | 全スナップショットの一覧 |
| lifecycle | コンテナの起動 |
| lifecycle | コンテナの強制停止 |
| lifecycle | タイムアウト付きの安全なシャットダウン |
| lifecycle | コンテナの再起動 |
| lifecycle | スナップショットの作成 |
| all | スナップショットの削除 |
| all | スナップショットへのロールバック |
ストレージ (2)
ツール | 説明 |
| 使用量を含むストレージプールの一覧 (ノードによるフィルタリング可) |
| ストレージプールのコンテンツ (ISO、バックアップ、イメージ、テンプレート) |
クラスター (4)
ツール | 説明 |
| クラスターの健全性、クォーラム、ノードメンバーシップ |
| 全リソース (VM、コンテナ、ストレージ、ノード) |
| 設定済みのバックアップジョブ |
| 次に使用可能な VM/コンテナ ID |
アーキテクチャ
src/proxmox_mcp/
├── server.py # FastMCP instance + entry point
├── config.py # Pydantic Settings (PROXMOX_ prefix)
├── client.py # Proxmoxer connection via lifespan
└── tools/ # nodes, vms, containers, storage, clusterデフォルトで読み取り専用 — 権限が必要なツールは
PROXMOX_RISK_LEVELで制限単一接続 — Proxmoxer クライアントは起動時に一度だけ作成され、ライフサイクルを通じて共有
生の JSON 出力 — フォーマットなし。LLM が直接データを消費
開発
スタンドアロン実行 (テスト)
export PROXMOX_HOST=192.168.1.100
export PROXMOX_USER=root@pam
export PROXMOX_TOKEN_NAME=mcp
export PROXMOX_TOKEN_VALUE=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
docker run -i --rm \
-e PROXMOX_HOST -e PROXMOX_USER \
-e PROXMOX_TOKEN_NAME -e PROXMOX_TOKEN_VALUE \
ghcr.io/akmalovaa/proxmox-mcp:latestDocker なし (UV)
git clone https://github.com/akmalovaa/proxmox-mcp.git && cd proxmox-mcp && uv syncMCP クライアント設定:
{
"mcpServers": {
"proxmox": {
"command": "uv",
"args": ["run", "--directory", "/path/to/proxmox-mcp", "proxmox-mcp"],
"env": {
"PROXMOX_HOST": "192.168.1.100",
"PROXMOX_TOKEN_NAME": "mcp",
"PROXMOX_TOKEN_VALUE": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
}
}
}ソースからビルド
git clone https://github.com/akmalovaa/proxmox-mcp.git
cd proxmox-mcp
docker build -t proxmox-mcp .ライセンス
MIT
Maintenance
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/akmalovaa/proxmox-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server