Proxmox Lab
БесплатноНе проверенProxmox home lab management MCP server that enables Claude Code to manage Proxmox VMs, Terraform, Ansible, Kubernetes, ArgoCD, and other lab utilities via HTTP/
Описание
Proxmox home lab management MCP server that enables Claude Code to manage Proxmox VMs, Terraform, Ansible, Kubernetes, ArgoCD, and other lab utilities via HTTP/SSE.
README
Proxmox ホームラボ管理用 MCP サーバー。Raspberry Pi 5 (Ubuntu 24) 上で稼働し、Claude Code から HTTP/SSE で接続する。
構成
Claude Code (Windows)
│ HTTP/SSE http://192.168.210.55:8000/sse
▼
Raspberry Pi 5 (Ubuntu 24) ← MCP Server
├── proxmoxer → Proxmox API (LAN)
├── terraform CLI (ネイティブ実行)
├── ansible CLI (ネイティブ実行)
├── kubectl (kubeconfig)
└── ArgoCD REST API (http://argocd.homelab.local)
セットアップ(Raspberry Pi 上)
1. uv のインストール
curl -LsSf https://astral.sh/uv/install.sh | sh
source $HOME/.local/bin/env
2. リポジトリの配置
git clone https://github.com/fukui-yuto/proxmox-lab-mcp.git ~/proxmox-lab-mcp
cd ~/proxmox-lab-mcp
3. 環境変数の設定
cp .env.example .env
vi .env # 各サービスの接続情報を記入
必須の環境変数:
| 変数名 | 説明 |
|---|---|
PROXMOX_HOST |
Proxmox ホスト IP |
PROXMOX_USER |
Proxmox ユーザー (例: root@pam) |
PROXMOX_TOKEN_NAME |
API トークン名 |
PROXMOX_TOKEN_VALUE |
API トークン値 |
TERRAFORM_DIR |
terraform ディレクトリのパス |
ANSIBLE_DIR |
ansible ディレクトリのパス |
KUBECONFIG |
kubeconfig ファイルのパス |
ArgoCD ツールを使用する場合(任意):
| 変数名 | 説明 |
|---|---|
ARGOCD_SERVER |
ArgoCD サーバー URL (例: http://argocd.homelab.local) |
ARGOCD_TOKEN |
ArgoCD API トークン(expiresIn=0 で生成、パスワード変更で無効化されない) |
ARGOCD_USERNAME |
自動再ログイン用ユーザー名(設定すると 401 時に自動復旧) |
ARGOCD_PASSWORD |
自動再ログイン用パスワード(設定すると 401 時に自動復旧) |
ARGOCD_VERIFY_SSL |
SSL 検証 (true/false、デフォルト: false) |
自動再ログインの仕組み:
ARGOCD_TOKENが期限切れ・無効になった場合、ARGOCD_USERNAME/ARGOCD_PASSWORDが設定されていれば自動でセッションを再取得してリトライする。両方設定しておくことを推奨。
ArgoCD API トークンの取得方法:
# admin アカウントに apiKey 権限を付与(初回のみ)
kubectl -n argocd patch configmap argocd-cm \
-p '{"data": {"accounts.admin": "apiKey,login"}}'
# セッショントークンを取得してから永続 API トークンを生成
SESSION=$(curl -sk -X POST http://argocd.homelab.local/api/v1/session \
-H 'Content-Type: application/json' \
-d '{"username":"admin","password":"<password>"}' | python3 -c "import sys,json; print(json.load(sys.stdin)['token'])")
curl -sk -X POST http://argocd.homelab.local/api/v1/account/admin/token \
-H "Authorization: Bearer $SESSION" \
-H 'Content-Type: application/json' \
-d '{"expiresIn": 0, "id": "mcp-token"}' | python3 -c "import sys,json; print(json.load(sys.stdin)['token'])"
取得したトークンを .env の ARGOCD_TOKEN に設定し、サービスを再起動する:
# .env を編集して ARGOCD_TOKEN を更新
vi /root/proxmox-lab-mcp/.env
# MCP サービスを再起動
sudo systemctl restart proxmox-lab-mcp
また、Pi の /etc/hosts に ArgoCD のホスト名を追加しておく必要があります:
echo "192.168.210.21 argocd.homelab.local" >> /etc/hosts
4. 起動確認
uv run lab-mcp
# → http://0.0.0.0:8000/sse で起動
5. systemd サービス登録(常時起動)
sudo tee /etc/systemd/system/proxmox-lab-mcp.service > /dev/null <<EOF
[Unit]
Description=Proxmox Lab MCP Server
After=network.target
[Service]
Type=simple
User=root
WorkingDirectory=/root/proxmox-lab-mcp
ExecStart=/root/.local/bin/uv run lab-mcp
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl daemon-reload
sudo systemctl enable --now proxmox-lab-mcp
sudo systemctl status proxmox-lab-mcp
Proxmox API トークン作成
Proxmox Web UI → Datacenter → Permissions → API Tokens で作成:
- User:
root@pam - Token ID:
mcp-token - Privilege Separation: OFF(root 権限を継承)
Claude Code への登録
claude mcp add --transport sse -s user proxmox-lab http://<pi-ip>:8000/sse
利用可能なツール
Phase 1: Proxmox 読み取り系 ✅
| ツール名 | 説明 |
|---|---|
proxmox_list_nodes |
ノード一覧・CPU/メモリ/稼働状態 |
proxmox_list_vms |
全ノードの VM/LXC 一覧 |
proxmox_get_vm_status |
特定 VM の詳細状態 |
proxmox_get_node_resources |
ノードのリソース使用量 |
proxmox_list_storage |
ストレージプール一覧・使用量 |
Proxmox 操作系 ✅
| ツール名 | 説明 | 破壊的 |
|---|---|---|
proxmox_start_vm |
VM / LXC 起動 | ✗ |
proxmox_stop_vm |
VM / LXC 停止 | ✓ confirm 必須 |
proxmox_reboot_vm |
VM / LXC 再起動 | ✓ confirm 必須 |
proxmox_list_snapshots |
スナップショット一覧 | ✗ |
proxmox_create_snapshot |
スナップショット作成 | ✗ |
proxmox_rollback_snapshot |
スナップショットへロールバック | ✓ confirm 必須 |
proxmox_list_tasks |
直近タスク一覧 | ✗ |
Proxmox 調査系 ✅
| ツール名 | 説明 |
|---|---|
proxmox_get_vm_config |
VM / LXC の設定詳細(CPU / メモリ / ディスク / ネットワーク) |
proxmox_get_task_log |
タスク UPID のログ取得(list_tasks で得た UPID を指定) |
proxmox_get_cluster_status |
クラスター全体の健全性ステータス |
proxmox_list_networks |
ノードのネットワーク設定一覧 |
proxmox_get_storage_content |
ストレージ内の ISO / テンプレート一覧 |
proxmox_get_replication_status |
ZFS レプリケーションジョブの状態(node01 ↔ node02 同期確認) |
proxmox_get_backup_jobs |
vzdump バックアップタスク履歴 |
proxmox_get_certificate_info |
TLS 証明書情報と残り有効日数 |
Phase 2: Terraform tools ✅
| ツール名 | 説明 | 破壊的 |
|---|---|---|
terraform_plan |
terraform plan 実行・差分表示 | ✗ |
terraform_validate |
構文検証のみ(apply なし) | ✗ |
terraform_state_list |
state 内リソース一覧 | ✗ |
terraform_state_show |
特定リソースの state 詳細 | ✗ |
terraform_output |
output 値取得 | ✗ |
terraform_apply |
terraform apply 実行 | ✓ confirm 必須 |
terraform_destroy |
terraform destroy 実行 | ✓ confirm 必須 |
Phase 3: Ansible tools ✅
| ツール名 | 説明 | 破壊的 |
|---|---|---|
ansible_ping |
全ホスト疎通確認 | ✗ |
ansible_list_inventory |
インベントリ構成確認 | ✗ |
ansible_run_module |
アドホックモジュール実行(shell, setup 等) | ✗ |
ansible_get_facts |
ホストの facts 収集(OS / ハードウェア情報) | ✗ |
ansible_run_playbook |
playbook 実行 | ✓ confirm 必須 |
Phase 4: kubectl / Helm tools ✅
| ツール名 | 説明 | 破壊的 |
|---|---|---|
kubectl_get |
kubectl get <resource>(label_selector / output / jq_filter 引数対応) | ✗ |
kubectl_describe |
kubectl describe <resource> <name> | ✗ |
kubectl_logs |
Pod ログ取得(--previous / container / since 引数対応) | ✗ |
kubectl_exec |
Pod 内コマンド実行(シェル調査・疎通確認等) | ✗ |
kubectl_get_events |
Namespace / Pod のイベント一覧(障害原因特定) | ✗ |
kubectl_get_secret |
Secret 内容確認(値はマスク表示) | ✗ |
kubectl_get_configmap |
ConfigMap 内容確認 | ✗ |
kubectl_run |
一時 Pod でコマンド実行(Pod は自動削除) | ✗ |
kubectl_port_forward |
ローカルへのポートフォワード(バックグラウンド実行) | ✗ |
kubectl_apply |
マニフェスト apply(ファイルパス or インライン YAML 対応) | ✓ confirm 必須 |
kubectl_delete |
リソース削除 | ✓ confirm 必須 |
kubectl_patch |
リソース部分更新(merge / strategic / json パッチ対応) | ✗ |
kubectl_annotate |
アノテーション追加・更新 | ✗ |
kubectl_rollout_status |
Deployment ロールアウト状態確認 | ✗ |
kubectl_rollout_restart |
Deployment / StatefulSet / DaemonSet のローリングリスタート | ✗ |
kubectl_wait |
リソースが指定条件になるまで待機(condition / timeout 指定可) | ✗ |
kubectl_top |
Node / Pod リソース使用量 | ✗ |
helm_list |
Helm リリース一覧 | ✗ |
helm_get_values |
リリースの values 確認 | ✗ |
helm_show_values |
チャートのデフォルト values 確認(インストール前の設定確認に有用) | ✗ |
helm_upgrade |
リリースのアップグレード/インストール | ✓ confirm 必須 |
helm_uninstall |
リリースの削除 | ✓ confirm 必須 |
Phase 5: ArgoCD tools ✅
環境変数 ARGOCD_SERVER / ARGOCD_TOKEN が必要。
| ツール名 | 説明 | 破壊的 |
|---|---|---|
argocd_list_apps |
全アプリの一覧と sync/health 状態 | ✗ |
argocd_get_app |
アプリ詳細(リソース一覧・条件付き状態) | ✗ |
argocd_sync |
アプリの sync 実行(revision / prune / dry_run 対応) | ✓ |
argocd_refresh |
hard refresh トリガー(Git から再取得) | ✗ |
argocd_app_history |
sync 履歴(いつ・どのリビジョンがデプロイされたか) | ✗ |
argocd_app_managed_resources |
管理リソース一覧(status / health / prune 状態) | ✗ |
argocd_app_diff |
リソース差分(live vs desired)— OutOfSync 原因特定 | ✗ |
argocd_app_terminate_op |
実行中オペレーションの終了(sync 詰まり解消) | ✗ |
argocd_list_out_of_sync |
OutOfSync アプリの一覧 | ✗ |
argocd_list_unhealthy |
Unhealthy アプリの一覧 | ✗ |
Longhorn / Cilium / Vault ✅
| ツール名 | 説明 | 破壊的 |
|---|---|---|
longhorn_volumes |
ボリューム一覧と状態(attached / detached / faulted) | ✗ |
cilium_status |
Cilium CNI の状態(agent health / endpoint 数) | ✗ |
vault_status |
Vault の状態(sealed / unsealed / HA モード) | ✗ |
Velero (バックアップ / リストア) ✅
| ツール名 | 説明 | 破壊的 |
|---|---|---|
velero_backup_list |
バックアップ一覧と状態 | ✗ |
velero_restore_list |
リストア一覧と状態 | ✗ |
velero_schedule_list |
スケジュール一覧 | ✗ |
velero_create_backup |
バックアップ作成 | ✓ confirm 必須 |
velero_create_restore |
リストア実行 | ✓ confirm 必須 |
kubectl / Helm 追加 ✅
| ツール名 | 説明 | 破壊的 |
|---|---|---|
kubectl_drain |
ノードからワークロード退避(メンテナンス用) | ✓ confirm 必須 |
kubectl_cordon |
ノードをスケジュール不可にする | ✗ |
kubectl_uncordon |
ノードのスケジュール再開 | ✗ |
kubectl_scale |
レプリカ数変更 | ✗ |
helm_history |
リリースの履歴(リビジョン一覧) | ✗ |
helm_rollback |
リリースを指定リビジョンに戻す | ✓ confirm 必須 |
Proxmox 追加 ✅
| ツール名 | 説明 | 破壊的 |
|---|---|---|
proxmox_migrate_vm |
VM / LXC を別ノードにマイグレーション | ✓ confirm 必須 |
Lab ユーティリティ ✅
| ツール名 | 説明 | 破壊的 |
|---|---|---|
lab_ping |
Raspberry Pi から疎通確認 | ✗ |
lab_wakeup |
Wake-on-LAN でホスト起動 | ✗ |
lab_exec |
SSH 経由で VM / ホスト上のコマンドを直接実行 | ✗ |
lab_check_port |
ポート開閉・疎通の確認 | ✗ |
lab_check_ports |
複数ポート一括確認 | ✗ |
lab_dns_lookup |
DNS 名前解決(Pi-hole 経由確認等) | ✗ |
lab_traceroute |
ネットワーク経路確認 | ✗ |
lab_curl |
HTTP リクエスト実行(ヘルスチェック等) | ✗ |
lab_journal |
SSH 経由で journalctl ログ取得 | ✗ |
lab_start_cluster |
クラスター全体の起動 | ✗ |
lab_stop_cluster |
クラスター全体の停止 | ✓ confirm 必須 |
lab_cluster_health |
ラボ全体の健全性サマリー | ✗ |
安全設計
破壊的操作には confirm: bool パラメータを必須化:
@mcp.tool()
def terraform_apply(confirm: bool = False) -> str:
if not confirm:
return "ERROR: confirm=true を明示してください"
# 実行
Установка Proxmox Lab
У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.
▸ github.com/fukui-yuto/proxmox-lab-mcpFAQ
Proxmox Lab MCP бесплатный?
Да, Proxmox Lab MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для Proxmox Lab?
Нет, Proxmox Lab работает без API-ключей и переменных окружения.
Proxmox Lab — hosted или self-hosted?
Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.
Как установить Proxmox Lab в Claude Desktop, Claude Code или Cursor?
Открой Proxmox Lab на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
GitHub
PRs, issues, code search, CI status
автор: GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
автор: mcpdotdirectCompare Proxmox Lab with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории development
