VMware-AIops
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| VMWARE_AIOPS_CONFIG | No | Path to the YAML configuration file containing vCenter/ESXi targets. If not specified, the server typically looks for a config in ~/.vmware-aiops/config.yaml. |
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_power_onA | [WRITE] Power on a virtual machine. Args: vm_name: Exact name of the virtual machine. target: Optional vCenter/ESXi target name from config. Uses default if omitted. |
| vm_power_offA | [WRITE] Power off a virtual machine. Graceful shutdown by default, force if specified. Args: vm_name: Exact name of the virtual machine. force: If True, hard power off. If False, graceful guest shutdown. target: Optional vCenter/ESXi target name from config. Uses default if omitted. |
| browse_datastoreA | [READ] Browse files in a vSphere datastore directory. Use this to discover OVA, ISO, VMDK, and other files on datastores before deploying VMs. Args: datastore_name: Name of the datastore to browse. path: Subdirectory path (empty string for root). pattern: Glob pattern to filter files (e.g. ".ova", ".iso", "*"). target: Optional vCenter/ESXi target name from config. |
| scan_datastore_imagesA | [READ] Scan all accessible datastores for deployable images (OVA/ISO/OVF/VMDK). Results are cached locally in ~/.vmware-aiops/image_registry.json for fast lookup via list_cached_images. Run this to refresh the cache. Args: target: Optional vCenter/ESXi target name from config. |
| deploy_vm_from_ovaA | [WRITE] Deploy a VM from a local OVA file. Parses the OVF descriptor, creates import spec, uploads VMDKs via HTTP NFC lease. Optionally powers on and creates a baseline snapshot. Args: ova_path: Local file path to the .ova file. vm_name: Desired name for the new VM. datastore_name: Target datastore for the VM. network_name: Network to attach (default "VM Network"). folder_path: VM folder path in vCenter (optional). power_on: Power on after deployment. snapshot_name: Create a baseline snapshot with this name (optional). target: Optional vCenter/ESXi target name from config. |
| deploy_vm_from_templateA | [WRITE] Deploy a new VM by cloning from a vSphere template. Args: template_name: Name of the source vSphere template. new_name: Name for the new VM. datastore_name: Target datastore (uses template's datastore if omitted). cpu: Override CPU count (optional). memory_mb: Override memory in MB (optional). power_on: Power on after deployment. snapshot_name: Create a baseline snapshot with this name (optional). target: Optional vCenter/ESXi target name from config. |
| deploy_linked_cloneA | [WRITE] Create a linked clone from a VM snapshot (near-instant, minimal disk). Linked clones share the source disk and use copy-on-write delta disks. This is the fastest provisioning method. Args: source_vm_name: Source VM to clone from. snapshot_name: Snapshot on the source VM to use as clone base. new_name: Name for the new linked clone. cpu: Override CPU count (optional). memory_mb: Override memory in MB (optional). power_on: Power on after creation. baseline_snapshot: Create a new snapshot on the clone (optional). target: Optional vCenter/ESXi target name from config. |
| attach_iso_to_vmB | [WRITE] Attach an ISO from a datastore to a VM's CD-ROM drive. Args: vm_name: Target VM name. iso_ds_path: Datastore path, e.g. "[datastore1] iso/ubuntu.iso". target: Optional vCenter/ESXi target name from config. |
| convert_vm_to_templateA | [WRITE] Convert a powered-off VM to a vSphere template. After conversion the VM cannot be powered on — it serves as a clone source for deploy_vm_from_template. Args: vm_name: Name of the VM to convert (must be powered off). target: Optional vCenter/ESXi target name from config. |
| batch_clone_vmsA | [WRITE] Batch clone multiple VMs from a source VM (gold image). Each clone: full copy → optional reconfigure → optional snapshot → optional power on. Args: source_vm_name: Source VM to clone from. vm_names: List of names for the new VMs. cpu: Override CPU count for all clones (optional). memory_mb: Override memory for all clones (optional). snapshot_name: Create a baseline snapshot on each clone (optional). power_on: Power on each clone after creation. target: Optional vCenter/ESXi target name from config. |
| batch_linked_clone_vmsA | [WRITE] Batch create linked clones from a VM snapshot (fastest batch provisioning). Each clone shares the source disk via copy-on-write. Args: source_vm_name: Source VM to clone from. snapshot_name: Snapshot to use as clone base. vm_names: List of names for the new linked clones. cpu: Override CPU count (optional). memory_mb: Override memory (optional). power_on: Power on each clone. baseline_snapshot: Create a new snapshot on each clone (optional). target: Optional vCenter/ESXi target name from config. |
| batch_deploy_from_specA | [WRITE] Batch deploy VMs from a YAML specification file. The YAML spec supports all provisioning channels:
Args: spec_path: Path to the deploy.yaml specification file. target: Optional vCenter/ESXi target name from config. |
| cluster_createB | [WRITE] Create a new cluster with optional HA and DRS configuration. Args: name: Name for the new cluster. datacenter: Datacenter name (uses first datacenter if omitted). ha: Enable vSphere HA (default False). drs: Enable DRS (default False). drs_behavior: DRS behavior: "fullyAutomated", "partiallyAutomated", or "manual". target: Optional vCenter target name from config. |
| cluster_deleteA | [WRITE] Delete an empty cluster (no hosts must remain). Args: name: Name of the cluster to delete. target: Optional vCenter target name from config. |
| cluster_add_hostB | [WRITE] Move a host into a cluster. Args: cluster_name: Target cluster name. host_name: ESXi host name to move into the cluster. target: Optional vCenter target name from config. |
| cluster_remove_hostA | [WRITE] Remove a host from a cluster (host must be in maintenance mode). Args: cluster_name: Cluster to remove the host from. host_name: ESXi host name to remove. target: Optional vCenter target name from config. |
| cluster_configureA | [WRITE] Reconfigure cluster HA/DRS settings. Args: name: Cluster name. ha: Enable (True) or disable (False) HA, or None to leave unchanged. drs: Enable (True) or disable (False) DRS, or None to leave unchanged. drs_behavior: DRS behavior: "fullyAutomated", "partiallyAutomated", or "manual". target: Optional vCenter target name from config. |
| cluster_infoA | [READ] Get detailed cluster information (hosts, HA/DRS config, resources). Args: name: Cluster name. target: Optional vCenter target name from config. |
| vm_set_ttlA | [WRITE] Set a Time-To-Live (TTL) for a VM. The daemon auto-deletes it when expired. The scheduler daemon must be running ( Args: vm_name: Name of the VM to auto-delete. minutes: Minutes until deletion (minimum 1). target: Optional vCenter/ESXi target name from config. |
| vm_cancel_ttlA | [WRITE] Cancel an existing TTL for a VM (prevents auto-deletion). Args: vm_name: Name of the VM whose TTL should be cancelled. |
| vm_list_ttlA | [READ] List all VMs with TTLs registered, including expiry time and status. Returns a list of TTL entries with remaining_minutes and expired flag. |
| vm_clean_slateA | [WRITE] Revert a VM to its baseline snapshot (Clean Slate). Powers off the VM first if it is running, then reverts to the named snapshot. Use this to reset a lab/dev VM to a clean starting state after a task completes. Args: vm_name: Name of the VM to revert. snapshot_name: Snapshot name to revert to (default: "baseline"). target: Optional vCenter/ESXi target name from config. |
| vm_guest_execA | [WRITE] Execute a command inside a VM via VMware Tools. Requires VMware Tools running in the guest OS. Returns exit_code, stdout, stderr, and timed_out flag. Note: VMware Guest Ops API does not capture stdout/stderr directly. To capture output, redirect to a file and use vm_guest_download: command="/bin/bash", arguments="-c 'ls -la /tmp > /tmp/output.txt'" Then download /tmp/output.txt. Args: vm_name: Target VM name. command: Full path to program (e.g. "/bin/bash", "C:\Windows\System32\cmd.exe"). arguments: Command arguments (e.g. "-c 'whoami'"). username: Guest OS username (default "root"). password: Guest OS password. working_directory: Working directory inside guest (optional). target: Optional vCenter/ESXi target name from config. |
| vm_guest_exec_outputA | [WRITE] Execute a shell command inside a VM and capture stdout + stderr. Automatically detects guest OS (Linux/Windows) and selects the correct shell. Output is captured by redirecting to a temp file, downloading it, then cleaning up — no manual redirection needed. Returns exit_code, stdout, stderr, timed_out, os_family. Args: vm_name: Target VM name. command: Shell command (e.g. "df -h", "ls /etc", "ipconfig"). username: Guest OS username (default "root"). password: Guest OS password. timeout: Max wait seconds (default 300). target: Optional vCenter/ESXi target name from config. |
| vm_guest_uploadA | [WRITE] Upload a file from local machine to a VM via VMware Tools. Requires VMware Tools running in the guest OS. Args: vm_name: Target VM name. local_path: Local file path to upload. guest_path: Destination path inside the guest. username: Guest OS username (default "root"). password: Guest OS password. target: Optional vCenter/ESXi target name from config. |
| vm_guest_downloadA | [READ] Download a file from a VM to local machine via VMware Tools. Requires VMware Tools running in the guest OS. Args: vm_name: Target VM name. guest_path: File path inside the guest to download. local_path: Local destination path. username: Guest OS username (default "root"). password: Guest OS password. target: Optional vCenter/ESXi target name from config. |
| vm_guest_provisionA | [WRITE] Provision a VM by running a sequence of guest operations (exec / upload / service). Combines key injection, software installation, and service startup into a single call. Steps execute in order; stops on first failure. Step types:
Args: vm_name: Target VM name. username: Guest OS username. password: Guest OS password. steps: Ordered list of step dicts. timeout: Per-step timeout in seconds (default 300). target: Optional vCenter/ESXi target name from config. Returns: dict with success, completed_steps, total_steps, results, error. Example: steps = [ {"type": "upload", "local_path": "~/.ssh/id_rsa.pub", "guest_path": "/root/.ssh/authorized_keys"}, {"type": "exec", "command": "chmod 600 /root/.ssh/authorized_keys"}, {"type": "exec", "command": "apt-get install -y nginx"}, {"type": "service", "name": "nginx", "action": "enable"}, {"type": "service", "name": "nginx", "action": "start"}, ] |
| vm_create_planA | [WRITE] Create an execution plan for multi-step VM operations. Auto-triggered when operations involve 2+ steps or 2+ VMs. Validates actions, checks target existence in vSphere, and generates a plan with rollback info for each step. Each operation is a dict with "action" key plus action-specific params. Allowed actions: power_on, power_off, reset, suspend, create_vm, delete_vm, reconfigure, create_snapshot, delete_snapshot, revert_snapshot, clone, migrate, deploy_ova, deploy_template, linked_clone, attach_iso, convert_to_template. Example: operations=[ {"action": "power_off", "vm_name": "test-1"}, {"action": "revert_snapshot", "vm_name": "test-1", "snapshot_name": "baseline"}, {"action": "power_on", "vm_name": "test-1"} ] Returns plan dict with plan_id, steps, summary (vms_affected, irreversible_steps, rollback_available). Show to user for confirmation before calling vm_apply_plan. Args: operations: List of operation dicts, each with "action" + params. target: Optional vCenter/ESXi target name from config. |
| vm_apply_planA | [WRITE] Execute a previously created plan step by step. Steps run sequentially. On failure: stops immediately, keeps the plan file with per-step results, and returns rollback_available flag. On success: deletes the plan file. If a step fails and rollback_available is true, ask the user whether to rollback, then call vm_rollback_plan if confirmed. Args: plan_id: The plan ID returned by vm_create_plan. target: Optional vCenter/ESXi target name from config. |
| vm_rollback_planA | [WRITE] Rollback executed steps of a failed plan in reverse order. Only call this after vm_apply_plan returns status='failed' and the user confirms they want to rollback. Irreversible steps (delete_vm, revert_snapshot, etc.) are skipped with a warning. Args: plan_id: The plan ID of the failed plan. target: Optional vCenter/ESXi target name from config. |
| vm_list_plansA | [READ] List all pending/failed plans. Returns plan summaries (plan_id, created_at, status, steps count, VMs affected). Stale plans (>24h) are auto-cleaned. |
| list_vcenter_alarmsA | [READ] List active/triggered alarms across the vCenter inventory. Returns alarms with severity (critical/warning/info), entity name and type, alarm name, acknowledged flag, and trigger time. Args: target: Optional vCenter target name from config. Uses default if omitted. limit: Max number of alarms to return (None = all). Use when many alarms are active. |
| acknowledge_vcenter_alarmA | [WRITE] Acknowledge a triggered vCenter alarm on a VM, host, or cluster. Marks the alarm as seen by an operator. The alarm remains in the triggered list but is flagged as acknowledged. Use list_vcenter_alarms to find entity_name and alarm_name values. Args: entity_name: Name of the entity with the alarm (VM name, host name, or cluster name). alarm_name: Exact alarm definition name from list_vcenter_alarms output. target: Optional vCenter target name from config. |
| reset_vcenter_alarmA | [WRITE] Reset a triggered vCenter alarm to cleared state (gray). Clears the alarm completely — it will no longer appear in the active alarm list. Use this after resolving the underlying issue. Use list_vcenter_alarms to find entity_name and alarm_name values. Args: entity_name: Name of the entity with the alarm (VM name, host name, or cluster name). alarm_name: Exact alarm definition name from list_vcenter_alarms output. target: Optional vCenter target name from config. |
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
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/zw008/vmware-aiops'
If you have feedback or need assistance with the MCP directory API, please join our Discord server