Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
VMWARE_AIOPS_CONFIGNoPath 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

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
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:

  • source: clone from a VM

  • template: clone from a vSphere template

  • linked_clone: instant clone from a snapshot

  • Per-VM ova: deploy from OVA file

  • Fallback: create empty VMs (optionally with ISO)

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 (vmware-aiops daemon start) for automatic deletion. TTLs are persisted in ~/.vmware-aiops/ttl.json.

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:

  • exec: {"type": "exec", "command": "apt-get install -y nginx"}

  • upload: {"type": "upload", "local_path": "/tmp/id_rsa.pub", "guest_path": "/root/.ssh/authorized_keys"}

  • service: {"type": "service", "name": "nginx", "action": "start"}

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

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

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