Pasang Proxmox AI di AI client-mu sendiri.
Claude Code, Codex, Claude Desktop, Cursor — atau API ChatGPT langsung. Tool yang muncul mengikuti role API key-mu, dan setiap perubahan tetap berhenti di propose → confirm.
Isi
1 · Terbitkan API key
Di dashboard, buka Organisasi → API keys → New key. Isinya:
- Role — ambil yang paling rendah yang masih cukup. Mulai dari
readonly; naik keoperatorkalau Anda ingin agent bisa menyusun perubahan (tetap tidak bisa mengeksekusi). - Allowed IP — wajib. Isi alamat IP publik tempat Anda akan memakainya. Key ditolak dari alamat lain, meski key-nya benar.
- Masa berlaku dan rate limit per menit.
Simpan langsung ke password manager. Kalau hilang, cabut dan buat baru — tidak ada cara menampilkannya lagi.
2 · Cara A — curl, tanpa Node
Claude Code dan Codex sudah bisa menjalankan shell, jadi tidak perlu memasang apa pun selain curl. Ini cara yang paling ringan.
$ git clone https://github.com/hamimistimewa/proxmox-ai-mcp $ cd proxmox-ai-mcp $ ./install.sh --url https://proxmox.ai.id --key pak_xxxxxxxxxxxx_… Checking https://proxmox.ai.id/api/v1 …vkey accepted — Acme · role operator, 31 toolsvcredentials saved — ~/.proxmox-ai/config.json (owner only)vpmx linked — ~/.local/bin/pmxvskill installed — ~/.claude/skills/proxmox-ai
Installer memverifikasi key sebelum menulis apa pun, menyimpan kredensial dengan mode 600, menaruh perintah pmx di PATH, dan menyalin skill ke client yang terpasang. Setelah itu tinggal bertanya ke agent Anda:
> node mana yang RAM-nya paling mepet? > VM mana saja yang belum ada backup minggu ini?
pmx adalah satu skrip POSIX shell tanpa dependensi selain curl — silakan dibaca isinya di bin/pmx.
Kalau mau pakai curl mentah
$ curl -sS -H "Authorization: Bearer pak_…" \
https://proxmox.ai.id/api/v1/nodes
3 · Cara B — MCP server
Kalau Anda ingin tool-nya muncul sebagai tool betulan di daftar tool client (bukan lewat shell), pakai MCP server. Butuh Node 20 atau lebih baru.
$ node bin/install.mjs --url https://proxmox.ai.id --key pak_…
Pemeriksaan yang sama, lalu server didaftarkan ke setiap client yang ditemukan: Claude Code, Claude Desktop, Codex, Cursor, Windsurf, Gemini CLI, dan VS Code. Client yang tidak terpasang dilewati; entri yang sudah ada digabung, bukan ditimpa. Restart client setelahnya — konfigurasi MCP dibaca saat start.
Tetap nol dependensi: seluruh protokol JSON-RPC ditulis apa adanya di bin/proxmox-ai-mcp.mjs, bisa dibaca sekali duduk.
4 · Kenapa tool-nya beda per key
Tidak ada daftar tool yang dibawa client. Saat start, keduanya menanyakan ke platform: key ini boleh memanggil apa?
| Role key | Yang dilihat agent |
|---|---|
readonly | node, guest, storage, backup, report, audit — baca saja |
operator | di atasnya, plus propose_action, confirm_action, cancel_action |
superadmin | di atasnya, plus koneksi, backup server, alert, tim |
| platform key | organisasi, host, vRouter, ringkasan seluruh estate |
# key operator
$ pmx tools
scope: organization role: operator org: Acme
whoami GET /me
list_nodes GET /nodes
propose_action POST /actions
confirm_action POST /actions/{id}/confirm
…53 tools
# key readonly — 48 tools, dan propose_action tidak ada di antaranya
Superadmin dapat 65 tool, dan platform key dapat 24 tool untuk mengelola seluruh estate. Key readonly tidak pernah diberi tahu bahwa propose_action ada. Jadi model tidak bisa mencoba lalu ditolak — tool-nya memang tidak ada. IP whitelist, rate limit, dan masa berlaku tetap ditegakkan platform di setiap panggilan.
Efek lain: daftar tool selalu ikut terbaru. Endpoint baru di platform otomatis muncul di semua pemasangan pada start berikutnya — Anda tidak perlu menarik ulang repo.
5 · Workflow siap pakai
Selain tool, server ini juga menerbitkan prompt — alur kerja ops yang sudah tahu tool mana yang dipanggil, dengan urutan apa, dan apa yang dilaporkan. Di Claude Code mereka muncul sebagai slash command.
| Prompt | Yang dikerjakan |
|---|---|
health-check | Menyisir armada: tekanan node, task gagal, guest tanpa backup terbaru |
capacity-review | Sisa headroom per node, resource mana yang habis duluan, kira-kira kapan |
backup-audit | Guest tanpa proteksi, job gagal, datastore yang tak terjangkau node |
exposure-review | Apa yang terbuka ke internet lewat vRouter, dan apakah pantas |
triage | Mulai dari gejala, dipersempit pakai data live — bukan tebakan |
plan-vm | Pilih node dan template dari opsi nyata, lalu tinggalkan proposal |
explain-action | Membaca proposal yang menunggu: apa yang berubah, apa yang sulit dibatalkan |
> /mcp__proxmox-ai__health-check > /mcp__proxmox-ai__triage symptom="web-01 lambat sejak pagi"
Prompt juga ikut role key: plan-vm butuh propose_action, jadi key readonly ditawari 6 prompt, operator 7. Tidak satu pun yang mengonfirmasi apa-apa — semuanya berakhir dengan menyuruh model berhenti di rencana.
Ada juga resource, yaitu data yang bisa ditarik client sebagai konteks tanpa menghabiskan satu panggilan tool: proxmox://me, proxmox://nodes, proxmox://guests, proxmox://storage, proxmox://actions, proxmox://backups.
6 · Satu server untuk satu tim
Kalau tidak mau tiap orang memasang sendiri, jalankan satu server dan arahkan semua client ke sana. Tiap request membawa key-nya masing-masing, jadi tiap orang tetap hanya melihat tool yang key-nya izinkan.
$ proxmox-ai-mcp --transport http --port 8080vlistening on http://127.0.0.1:8080/mcp # dari client mana pun $ npx mcp-remote http://host:8080/mcp # atau lewat Docker $ docker build -t proxmox-ai-mcp . $ docker run --rm -p 8080:8080 -e PROXMOX_AI_TRANSPORT=http \ -e PROXMOX_AI_URL=https://proxmox.ai.id proxmox-ai-mcp
Melayani streamable HTTP di POST /mcp dan pemeriksaan kesiapan di GET /health. Tidak membuka stream SSE: tiap jawaban kembali pada POST yang memintanya.
7 · Daftar perintah
$ pmx me # key ini siapa, role apa, organisasi mana $ pmx tools # persis apa yang boleh dipanggil $ pmx get /nodes # armada $ pmx get /nodes/pve01/usage range=24h # satu node, dengan riwayat $ pmx get /vms # guest dan template $ pmx get /guests/101 # detail satu guest $ pmx get /storage # storage pool $ pmx get /disks # disk fisik, LVM, ZFS $ pmx get /capabilities # hak yang benar-benar dimiliki token Proxmox $ pmx get /backups/overview # backup terakhir per guest — mencari yang bolong $ pmx get /audit limit=20 # siapa mengubah apa, termasuk agent $ pmx actions # proposal yang menunggu dan hasil terakhir $ pmx action 42 # satu aksi, dengan rencana dan peringatannya
8 · Mengubah infrastruktur
Tidak ada satu pun perintah yang langsung mengubah Proxmox.
$ pmx propose guest_power vmid=101 operation=shutdown ! status: proposed · id 42 plan : Shut down (graceful) vm 101 (web-01) on pve01 warning : guest agent tidak merespons; shutdown bisa memakan waktu # tidak ada yang berubah sampai baris berikut dijalankan $ pmx confirm 42vstatus: executing → confirmed · audit #18422
Kalau rencananya memuat typed_confirmation (menghapus disk, memusnahkan guest, reboot node), teks itu harus dikirim persis: pmx confirm 42 "<teks persis>". Organisasi juga bisa mengaktifkan four-eyes, yang mewajibkan orang berbeda yang mengonfirmasi. Proposal kedaluwarsa setelah 15 menit.
Skill yang ikut terpasang itulah yang mengajarkan disiplin ini ke model — deskripsi tool saja tidak cukup. Skill-nya melarang model memanggil confirm_action atas inisiatif sendiri, dan mewajibkan rencana beserta seluruh peringatannya ditunjukkan dulu ke Anda.
9 · Dari API ChatGPT
$ node bin/export-openai-tools.mjs --url https://proxmox.ai.id --key pak_…vWrote 31 tools to schemas/openai-tools.json $ pip install openai $ python examples/openai_client.py "ringkas kondisi infrastruktur saya"
File-nya dihasilkan dari manifest yang sama, jadi tersaring oleh role key Anda dengan cara yang sama persis.
10 · Berkas yang ditulis
| Berkas | Isi |
|---|---|
~/.proxmox-ai/config.json | URL platform dan API key, mode 600 |
~/.local/bin/pmx | symlink ke bin/pmx |
~/.claude/skills/proxmox-ai/~/.codex/skills/proxmox-ai/ | skill |
~/.claude.json | Claude Code: path ke MCP server |
~/.codex/config.toml | Codex, sebagai [mcp_servers.proxmox_ai] |
~/.cursor/mcp.json dan sejenisnya | Cursor, Windsurf, Gemini CLI |
Berkas-berkas client hanya menerima sebuah path. Dotfiles Anda tetap aman untuk di-commit dan dibagikan.
11 · Pemecahan masalah
| Pesan | Artinya |
|---|---|
| cannot be used from … | IP Anda saat ini tidak ada di whitelist key |
| This needs the Operator role or higher | role key terlalu rendah — terbitkan key baru, jangan diulang-ulang |
| did not return a tool manifest | URL-nya bukan platform Proxmox AI |
pmx: no configuration | jalankan ./install.sh, atau set PROXMOX_AI_URL dan PROXMOX_AI_KEY |
| tool tidak muncul di client | restart client-nya; konfigurasi MCP dibaca saat start |
Menjalankan ulang installer mana pun aman, dan key selalu diverifikasi sebelum ada yang disentuh.