Skip to main content
Glama
washyu
by washyu

delete_proxmox_vm

Remove virtual machines or containers from Proxmox VE by specifying node and VM ID. Supports qemu VMs and LXC containers with optional configuration cleanup.

Instructions

Delete a VM or container from Proxmox

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nodeYesNode name
vmidYesVM/Container ID to delete
vm_typeNoType: 'qemu' for VM or 'lxc' for containerqemu
purgeNoRemove from all related configurations
hostNoProxmox host (optional)

Implementation Reference

  • Core implementation of delete_proxmox_vm that stops the VM/container if running, then deletes it via Proxmox API. Supports both VMs (qemu) and containers (lxc), with optional purge to remove from all related configurations.
    async def delete_proxmox_vm(
        node: str,
        vmid: int,
        host: str | None = None,
        vm_type: str = "qemu",
        purge: bool = False,
    ) -> dict[str, Any]:
        """
        Delete a VM or container.
    
        Args:
            node: Node name
            vmid: VM/Container ID
            host: Proxmox host (optional)
            vm_type: 'qemu' for VM or 'lxc' for container
            purge: Remove from all related configurations
    
        Returns:
            Deletion result
        """
        client = get_proxmox_client(host=host)
    
        try:
            # Stop VM first if running
            try:
                await manage_proxmox_vm(node, vmid, "stop", host, vm_type)
            except Exception:
                pass  # VM might already be stopped
    
            # Delete
            endpoint = f"/nodes/{node}/{vm_type}/{vmid}"
            if purge:
                endpoint += "?purge=1"
    
            result = await client.delete(endpoint)
    
            return {
                "status": "success",
                "node": node,
                "vmid": vmid,
                "message": f"VM {vmid} deleted successfully",
                "data": result,
            }
    
        except (aiohttp.ClientError, ValueError) as e:
            logger.error("Error deleting VM: %s", str(e))
            return {
                "status": "error",
                "message": f"Failed to delete VM: {str(e)}",
            }
  • MCP tool handler wrapper that extracts arguments from the tool call and invokes the delete_proxmox_vm function, returning the result in MCP protocol format.
    async def handle_delete_proxmox_vm(arguments: dict[str, Any]) -> dict[str, Any]:
        """Handle delete_proxmox_vm tool."""
        result = await delete_proxmox_vm(
            node=arguments["node"],
            vmid=arguments["vmid"],
            host=arguments.get("host"),
            vm_type=arguments.get("vm_type", "qemu"),
            purge=arguments.get("purge", False),
        )
        return {"content": [{"type": "text", "text": json.dumps(result, indent=2)}]}
  • Tool registration mapping 'delete_proxmox_vm' to its handler function in the tool handlers registry.
    "delete_proxmox_vm": handle_delete_proxmox_vm,
  • Schema definition for delete_proxmox_vm tool, specifying input parameters (node, vmid, vm_type, purge, host) with types, descriptions, defaults, and required fields.
    "delete_proxmox_vm": {
        "description": "Delete a VM or container from Proxmox",
        "inputSchema": {
            "type": "object",
            "properties": {
                "node": {
                    "type": "string",
                    "description": "Node name",
                },
                "vmid": {
                    "type": "integer",
                    "description": "VM/Container ID to delete",
                },
                "vm_type": {
                    "type": "string",
                    "description": "Type: 'qemu' for VM or 'lxc' for container",
                    "enum": ["qemu", "lxc"],
                    "default": "qemu",
                },
                "purge": {
                    "type": "boolean",
                    "description": "Remove from all related configurations",
                    "default": False,
                },
                "host": {
                    "type": "string",
                    "description": "Proxmox host (optional)",
                },
            },
            "required": ["node", "vmid"],
        },
    },

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/washyu/mcp_python_server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server