io.github.AIops-tools/proxmox-aiops
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PROXMOX_AIOPS_HOME | No | Path to the proxmox-aiops home directory (defaults to ~/.proxmox-aiops) |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| vm_agent_pingA | [READ] Ping a VM's QEMU guest agent to check it is installed and responsive. A non-running or absent agent yields responsive=False with an explanation rather than an error. Args: vmid: Numeric Proxmox VM id. target: Proxmox target name from config. node: Node name; omit to auto-locate the VM. |
| vm_backupA | [WRITE] Create a vzdump backup of a VM/CT to a storage. Returns task UPID. Args: vmid: Numeric Proxmox guest id (VM or container). storage: Backup-capable storage id (see storage_list / storage_content). mode: 'snapshot' (default, no downtime), 'suspend', or 'stop'. target: Proxmox target name from config. node: Node name; omit to auto-locate the guest. |
| backup_listA | [READ] List backup archives on a storage (optionally filtered by vmid). Args: storage: Storage id to list backups from. vmid: Optional guest id filter. target: Proxmox target name from config. node: Node name; omit to use the configured default node. |
| backup_restoreA | [WRITE] Restore a QEMU VM from a backup archive. HIGH RISK. Returns task UPID. With force=True this OVERWRITES an existing VM (destructive, no undo). Restoring into a free vmid records a delete as the safe inverse. Confirm with the user before calling. Pass dry_run=True to preview: it runs the same existing-VM guard (a preview that would be refused for overwriting without force refuses too) and reports whether it would overwrite or create. Args: vmid: Target VM id to restore into. archive: Backup volume id / archive path (see backup_list). storage: Storage to place the restored disks on. force: Overwrite vmid if it already exists (destructive). dry_run: If True, preview (runs the existing-VM guard) without restoring. target: Proxmox target name from config. node: Node name; omit to use the configured default node. |
| node_listA | [READ] List Proxmox cluster nodes with status, cpu load, and memory. Args: target: Proxmox target name from config; omit to use the default. |
| cluster_statusB | [READ] Return cluster membership + quorum status. The Args: target: Proxmox target name from config. |
| task_statusA | [READ] Poll a Proxmox async task (clone / migrate / backup) by its UPID. Use after a write that returned a task UPID to check completion instead of re-issuing the operation. The node is parsed from the UPID when omitted. Args: upid: The task UPID returned by an async write tool. target: Proxmox target name from config. node: Node the task runs on; omit to parse it from the UPID. |
| cluster_resourcesA | [READ] Aggregate /cluster/resources view of VMs, nodes, and storage. Single-call cluster-wide inventory. Use this to enumerate everything before drilling into vm_get / node_status. Args: resource_type: Optional filter — 'vm', 'node', or 'storage'. target: Proxmox target name from config. |
| node_statusA | [READ] Detailed status for one node: cpu, load average, memory, uptime. Args: node: Node name (see node_list). target: Proxmox target name from config. |
| task_logA | [READ] Fetch the log lines of an async task by its UPID. Returns {"lines": [...], "returned": N, "limit": L, "truncated": bool}. When truncated is true there are more lines than were returned — raise limit or narrow the query rather than assuming you have the whole log. Args: upid: The task UPID. limit: Max log lines to return. target: Proxmox target name from config. node: Node the task runs on; omit to parse it from the UPID. |
| next_vmidA | [READ] Return a free VMID for a new guest (/cluster/nextid). Args: target: Proxmox target name from config. |
| node_pressure_rcaA | [READ] Rank cluster nodes by CPU / memory / root-fs pressure. Pulls the /cluster/resources node view and flags each node over the CPU (85%), memory (90%), or disk (85%) thresholds, worst-first, citing the measured percentage and a concrete action for every finding. Args: target: Proxmox target name from config; omit to use the default. |
| guest_health_rcaA | [READ] Scan VMs and containers for stopped guests, memory saturation, and disks near full. Pulls the /cluster/resources guest view (qemu + lxc) and reports worst-first findings plus the list of stopped guests, each finding citing the measured number and a concrete remediation. Args: target: Proxmox target name from config; omit to use the default. |
| vm_resize_diskA | [WRITE] Grow a VM disk. GROW-ONLY — shrink requests are refused. No undo token: growing a disk cannot be reversed. Pass dry_run=True to preview. Args: vmid: Numeric Proxmox VM id. disk: Disk key, e.g. 'scsi0', 'virtio0', 'sata0'. size: '+G' increment (e.g. '+10G') or a larger absolute size. dry_run: If True, preview without resizing. target: Proxmox target name from config. node: Node name; omit to auto-locate the VM. |
| vm_move_diskA | [WRITE] Move a VM disk to another storage. Returns task UPID. Async. Records a reverse move as the undo token when the source storage is known. Pass dry_run=True to read the disk's current placement and preview the move. Args: vmid: Numeric Proxmox VM id. disk: Disk key, e.g. 'scsi0'. storage: Destination storage id. delete: Remove the source copy after the move completes. dry_run: If True, preview the from→to move without moving anything. target: Proxmox target name from config. node: Node name; omit to auto-locate the VM. |
| vm_firewall_rules_listA | [READ] List the firewall rules attached to a VM. Args: vmid: Numeric Proxmox VM id. target: Proxmox target name from config. node: Node name; omit to auto-locate the VM. |
| cluster_firewall_statusB | [READ] Cluster-wide firewall options (notably whether it is enabled). Args: target: Proxmox target name from config. |
| ha_statusA | [READ] Current HA status entries, or a not-configured signal. Returns {"configured": bool, "entries": [...]}; when HA is absent the list is empty and a message explains it. Args: target: Proxmox target name from config. |
| ha_resource_listA | [READ] HA-managed resources (VMs/CTs); empty when HA is not configured. Args: target: Proxmox target name from config. |
| ct_listA | [READ] List LXC containers with name, vmid, status, cpu, mem. Args: target: Proxmox target name from config; omit to use the default. node: Node name; omit to use the configured default / all nodes. |
| ct_startA | [WRITE] Start an LXC container. Returns the task UPID. Inverse: ct_stop. Pass dry_run=True to preview. Args: vmid: Numeric container id (see ct_list). dry_run: If True, preview without starting. target: Proxmox target name from config. node: Node name; omit to auto-locate the container. |
| ct_stopA | [WRITE] Stop an LXC container. Returns the task UPID. Inverse: ct_start. Pass dry_run=True to preview. Args: vmid: Numeric container id (see ct_list). dry_run: If True, preview without stopping. target: Proxmox target name from config. node: Node name; omit to auto-locate the container. |
| pool_listB | [READ] List resource pools (poolid + comment). Args: target: Proxmox target name from config. |
| pool_membersA | [READ] List the members of a pool (VMs, CTs, storage). Args: poolid: Pool id (see pool_list). target: Proxmox target name from config. |
| storage_listA | [READ] List storage pools on a node (id, type, total/used/avail bytes). Args: target: Proxmox target name from config; omit to use the default. node: Node name; omit to use the target's configured default node. |
| storage_contentA | [READ] List volumes on a storage pool (ISOs, disk images, backups, templates). Args: storage: Storage pool id (see storage_list). content: Optional filter — 'iso', 'images', 'backup', 'vztmpl'. target: Proxmox target name from config. node: Node name; omit to use the configured default node. |
| undo_listA | [READ] List recorded, not-yet-applied undo tokens (most recent first). Each entry names the original tool, the inverse tool that Returns {"undos": [...], "returned": N, "limit": L, "truncated": bool}.
Each entry carries Args: limit: Max rows to return (default 50, capped at 500). target: Unused (undo state is host-local); accepted for CLI uniformity. |
| undo_applyA | [WRITE][risk=medium] Apply a recorded undo by dispatching its inverse tool. The inverse runs through its own governed tool, so its own risk tier is recorded on the audit row there. Pass dry_run=True to preview the inverse call without executing it. A token can only be applied once. Args:
undo_id: The undoId from undo_list (or an |
| vm_listA | [READ] List QEMU VMs with name, vmid, status, cpu, mem. Scans the given node, the configured default node, or all cluster nodes. Use vm_get for full status of a single VM. Args: target: Proxmox target name from config; omit to use the default. node: Node name; omit to use the target's configured node / all nodes. |
| vm_getA | [READ] Return current status detail for a single VM by vmid. Args: vmid: Numeric Proxmox VM id (see vm_list). target: Proxmox target name from config. node: Node name; omit to auto-locate the VM across nodes. |
| vm_startA | [WRITE] Start a VM. Returns the Proxmox task UPID. Inverse: vm_stop. Args: vmid: Numeric Proxmox VM id. target: Proxmox target name from config. node: Node name; omit to auto-locate the VM. |
| vm_stopA | [WRITE] Hard-stop (power off) a VM. Returns the task UPID. Inverse: vm_start. This is an immediate power-off (not a graceful guest shutdown); the guest filesystem may be left dirty. Audited to ~/.proxmox-aiops/audit.db. Pass dry_run=True to preview. Args: vmid: Numeric Proxmox VM id. dry_run: If True, preview without stopping. target: Proxmox target name from config. node: Node name; omit to auto-locate the VM. |
| vm_snapshot_createA | [WRITE] Create a named snapshot of a VM. Inverse: vm_snapshot_delete. Pass dry_run=True to preview. Args: vmid: Numeric Proxmox VM id. name: Snapshot name (must be unique for the VM). dry_run: If True, preview without creating. target: Proxmox target name from config. node: Node name; omit to auto-locate the VM. |
| vm_snapshot_deleteA | [WRITE] Delete a named snapshot from a VM. Destroys a rollback point — no undo. Pass dry_run=True to preview. Args: vmid: Numeric Proxmox VM id. name: Snapshot name to delete (see vm_snapshot_list). dry_run: If True, preview without deleting. target: Proxmox target name from config. node: Node name; omit to auto-locate the VM. |
| vm_list_snapshotsB | [READ] List snapshots for a VM (name + description). Args: vmid: Numeric Proxmox VM id. target: Proxmox target name from config. node: Node name; omit to auto-locate the VM. |
| vm_configA | [READ] Return a VM's config (cores, memory, ostype, boot order). Args: vmid: Numeric Proxmox VM id. target: Proxmox target name from config. node: Node name; omit to auto-locate the VM. |
| vm_shutdownA | [WRITE] Graceful ACPI shutdown of a VM (vs the hard vm_stop). Inverse: vm_start. Pass dry_run=True to preview. Args: vmid: Numeric Proxmox VM id. dry_run: If True, preview without shutting down. target: Proxmox target name from config. node: Node name; omit to auto-locate the VM. |
| vm_rebootA | [WRITE] Reboot a VM (graceful). No undo token — reboot has no inverse. Args: vmid: Numeric Proxmox VM id. target: Proxmox target name from config. node: Node name; omit to auto-locate the VM. |
| vm_reconfigureA | [WRITE] Change a VM's cores and/or memory (MiB). Inverse: restore prior values. Provide at least one of cores / memory. The previous values are captured so the harness records a reverse reconfigure as the undo token. Pass dry_run=True to read the current cores/memory and preview the change. Args: vmid: Numeric Proxmox VM id. cores: New vCPU core count (omit to leave unchanged). memory: New memory in MiB (omit to leave unchanged). dry_run: If True, preview what would change without applying it. target: Proxmox target name from config. node: Node name; omit to auto-locate the VM. |
| vm_cloneA | [WRITE] Clone a VM to a new vmid. Returns the task UPID. Inverse: vm_delete(newid). Cloning is asynchronous — poll completion with task_status, do not re-issue. Pass dry_run=True to preview. Args: vmid: Source VM id to clone from. newid: New (unused) VM id for the clone. name: Optional name for the clone. dry_run: If True, preview without cloning. target: Proxmox target name from config. node: Node name; omit to auto-locate the source VM. |
| vm_deleteA | [WRITE] Permanently destroy a VM. IRREVERSIBLE — no undo token. Confirm with the user before calling. Audited to ~/.proxmox-aiops/audit.db. Pass dry_run=True to preview. Args: vmid: Numeric Proxmox VM id to destroy. dry_run: If True, preview without destroying. target: Proxmox target name from config. node: Node name; omit to auto-locate the VM. |
| vm_migrateA | [WRITE] Migrate a VM to another node. Returns task UPID. Inverse: migrate back. Asynchronous — poll completion with task_status. Pass dry_run=True to preview. Args: vmid: Numeric Proxmox VM id. target_node: Destination node name. online: True (default) for live migration; False to migrate while stopped. dry_run: If True, preview without migrating. target: Proxmox target name from config. node: Source node name; omit to auto-locate the VM. |
| vm_snapshot_rollbackA | [WRITE] Roll a VM back to a snapshot. IRREVERSIBLE — discards changes since then. No undo token (the discarded state cannot be recovered). Confirm with the user. Pass dry_run=True to preview. Args: vmid: Numeric Proxmox VM id. name: Snapshot name to roll back to (see vm_list_snapshots). dry_run: If True, preview without rolling back. target: Proxmox target name from config. node: Node name; omit to auto-locate the VM. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/AIops-tools/Proxmox-AIops'
If you have feedback or need assistance with the MCP directory API, please join our Discord server