Skip to content
Agentmart
Submit a tool

VMware AIops

AI-powered VMware vCenter/ESXi VM lifecycle and deployment with 61 MCP tools.

Connector by vmware-skills · GitHub account verified by the MCP Registry

IndexedMITLocal (stdio)★ 79
Write a review

Install

Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.

npx agentmarket install connector/vmware-skills-vmware-aiops

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

AI-powered VMware vCenter/ESXi VM lifecycle and deployment with 61 MCP tools.

Use cases: cloud-management, monitoring-observability

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.

Tools
18 read · 26 write · 17 delete
Secrets
None asked for
Install scripts
Not scanned yet
Runs as
Python package

Tools by what they do 61

Read from the source code; the running server may list different tools.

Read 18 · Look things up without changing anything.

  • browse_datastore
  • get_access_info
  • get_cluster_health_summary
  • get_cluster_info
  • get_cross_vcenter_attention
  • get_vm_task_status
  • investigate_datastore
  • investigate_host
  • investigate_vm
  • list_drs_rules
  • list_dvs_portgroups
  • list_host_vmks
Show 6 more tools
  • list_vcenter_alarms
  • list_vm_plans
  • list_vm_snapshots
  • list_vm_ttls
  • ping_from_vmk
  • scan_all_datastore_images

Write 26 · Create, change, send or run things.

  • acknowledge_vcenter_alarm
  • add_cluster_host
  • add_host_vmk
  • attach_iso_to_vm
  • batch_clone_vms
  • batch_deploy_from_spec
  • batch_linked_clone_vms
  • cancel_vm_ttl
  • clone_vm
  • configure_cluster
  • convert_vm_to_template
  • create_cluster
Show 14 more tools
  • create_drs_rule
  • create_dvs_portgroup
  • create_vm
  • create_vm_plan
  • create_vm_snapshot
  • deploy_linked_clone
  • deploy_vm_from_ova
  • deploy_vm_from_template
  • download_vm_guest_file
  • migrate_vm
  • power_on_vm
  • reconfigure_vm
  • set_drs_rule_enabled
  • set_vmk_service

Delete 17 · Delete, drop, revoke or wipe things.

  • apply_vm_plan
  • delete_cluster
  • delete_drs_rule
  • delete_vm
  • delete_vm_snapshot
  • power_off_vm
  • provision_vm_guest
  • remove_cluster_host
  • remove_host_vmk
  • reset_vcenter_alarm
  • restore_vm_clean_slate
  • revert_vm_snapshot
Show 5 more tools
  • rollback_vm_plan
  • run_vm_guest_command
  • run_vm_guest_command_with_output
  • set_vm_ttl
  • upload_vm_guest_file

Secrets and settings it asks for

Other settings (environment variables or headers).

  • VMWARE_AIOPS_CONFIG

Files it touches

  • Any path the agent passes to its tools

Tools (61)

Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].

  • acknowledge_vcenter_alarm

    [WRITE] Acknowledge a triggered vCenter alarm — marks it as seen WITHOUT clearing it. This only marks the alarm; it does not clear it. The alarm stays in the active list with acknowledged=true until its condition clears or it is reset. To remove it entirely after fixing the root cause use reset_vcenter_alarm instead. Get exact entity_name and alarm_name from list_vcenter_alarms first; an unknown pair returns a not-found error. Args: entity_name: VM, ESXi host, or cluster the alarm fired on (from list_vcenter_alarms output). alarm_name: Exact alarm definition name, e.g. "Virtu…

  • add_cluster_host

    [WRITE] Move an ESXi host that vCenter already manages into a cluster. The host must already be in vCenter inventory (standalone or in another cluster) — this does NOT register brand-new hosts and takes no host credentials; use the vCenter UI for first-time registration. Idempotent: a host already in the cluster returns success without change. Maintenance mode is not required to join (it IS required by remove_cluster_host). Check membership first with get_cluster_info. Returns a status string: moved, already-in-cluster, or a not-found error. Args: cluster_name: Destination cluster (creat…

  • add_host_vmk

    [WRITE] Add a static-IP VMkernel adapter on a DVS portgroup - preview/confirm gated. Deliberately minimal shape for throwaway test vmks on L2-only segments (e.g. a TEP VLAN): static IPv4, NO gateway, NO services enabled. The DVS port allocation is handled internally - pass the distributed portgroup name. confirm=False validates (host + portgroup exist, IP/netmask/MTU legal, IP not already on the host) and returns the exact spec without writing; confirm=True creates and returns the assigned device name. Verify with list_host_vmks; remove with remove_host_vmk. Audited. Args: host_name: ESX…

  • apply_vm_plancan change or delete data

    [WRITE] Execute a previously created plan step by step. Without confirm=True this only previews: it returns blast_radius listing every step (index, action, target object), the count and indices of the destructive ones (delete, power off, revert, guest commands...), and blockers — and runs nothing. Show that to the user and get their explicit decision. Do not set confirm=True on your own because the user asked earlier: they have not seen the preview yet. Each step is shown with its full parameters (passwords redacted). Each destructive step is measured as its own tool would measure it (delete…

  • attach_iso_to_vm

    [WRITE] Mount a datastore ISO into a VM's virtual CD-ROM drive. Reconfigures the existing CD-ROM (replacing any mounted ISO) or adds one on the VM's IDE controller; fails with a clear message if the VM has no IDE controller. Works whether the VM is powered on or off. Find ISO paths first with browse_datastore using pattern "*.iso". Returns a status string confirming attachment, or a VM-not-found / no-IDE-controller error. Args: vm_name: Exact VM name as shown in vCenter inventory. iso_ds_path: Datastore path in bracket format, e.g. "[datastore1] iso/ubuntu-22.04.iso". tar…

  • batch_clone_vms

    [WRITE] Batch clone multiple VMs from a source VM (gold image). Each clone: full copy → optional reconfigure → optional snapshot → optional power on. Returns one dict per VM with its status. Clones run sequentially, so a long vm_names list may take a while — prefer batch_linked_clone_vms for disposable test copies. Args: source_vm_name: Source VM to clone from. vm_names: Names for the new VMs. cpu: Override CPU count for all clones (optional). memory_mb: Override memory for all clones (optional). snapshot_name: Snapshot each clone with this name (optional). power_on: …

  • batch_deploy_from_spec

    [WRITE] Deploy multiple VMs in one call from a declarative YAML spec file. Use for fleet provisioning (several VMs, shared defaults); for a single VM prefer deploy_vm_from_template, clone_vm, deploy_vm_from_ova, or deploy_linked_clone. The channel is chosen by spec keys: "source" (full clone), "template", "linked_clone: {source, snapshot}", per-VM "ova", else empty-VM creation (optionally "iso"). A "defaults" block sets cpu/memory_mb/disk_gb/network/ datastore/snapshot/power_on, overridable per VM. VMs deploy sequentially and one VM's failure does not stop the rest. Args: spec_path: Loca…

  • batch_linked_clone_vms

    [WRITE] Batch create linked clones from a VM snapshot (fastest batch provisioning). Clones share the source disk via copy-on-write, so the source must stay intact. Returns one dict per clone. Prefer batch_clone_vms for independent copies. Args: source_vm_name: Source VM to clone from. snapshot_name: Clone base (from list_vm_snapshots). vm_names: Names for the new linked clones. cpu: Override CPU count (optional). memory_mb: Override memory (optional). power_on: Power on each clone. baseline_snapshot: Snapshot each clone with this name (optional). target: Optio…

  • browse_datastoreread-only

    [READ] Search a vSphere datastore folder and all its subfolders for files. Use this to find OVA/ISO/VMDK paths before calling deploy_vm_from_ova or attach_iso_to_vm; for an estate-wide image sweep use scan_all_datastore_images. Returns the list envelope: 'items' is one row per file, and 'returned'/'total'/'truncated' state completeness. Every match in the searched folders is returned, so truncated is always false. Args: datastore_name: Name of the datastore to browse. path: Datastore-relative folder to start from (empty string for root); a leading '/' or '..' is refused. The…

  • cancel_vm_ttl

    [WRITE] Cancel an existing TTL for a VM (prevents auto-deletion). Returns a status string. Use list_vm_ttls first for the exact vm_name. This only removes the schedule and never touches the VM itself. Args: vm_name: Name of the VM whose TTL should be cancelled.

  • clone_vm

    [WRITE] Clone a VM. Without to_host/to_datastore the clone lands on the source's host+datastore. Returns a status string naming the clone. Full independent copy — slow and full disk cost; prefer deploy_linked_clone for near-instant test copies and batch_clone_vms for many at once. Cloning a running VM may capture a crash-consistent disk. Args: vm_name: Source VM (or template) name. new_name: Name for the new clone. to_host: Target ESXi host name (default: source's host). to_datastore: Target datastore name (default: source's datastore). power_on: Power on the clone after …

  • configure_cluster

    [WRITE] Reconfigure cluster HA/DRS settings. Returns a status string naming what changed. Pass only the fields to change; None leaves a setting untouched — then verify with get_cluster_info. drs_behavior applies only when DRS is enabled. 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.

  • convert_vm_to_template

    [WRITE] Convert a powered-off VM to a vSphere template. Returns a status string. Use this to freeze a golden image: afterwards the VM cannot be powered on and serves only 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.

  • create_cluster

    [WRITE] Create a new empty cluster in a datacenter, optionally enabling HA and DRS. Fails with a clear error (no partial state) if the name already exists or drs_behavior is invalid. Then add hosts with add_cluster_host, change HA/DRS later with configure_cluster, and verify with get_cluster_info. Returns a status string naming the features enabled. Args: name: Name for the new cluster; must be unique in the datacenter. datacenter: Datacenter name; omit for the first one on the target. ha: True enables vSphere HA (default False). drs: True enables DRS (default False). drs…

  • create_drs_rule

    [WRITE] Create a VM-VM DRS rule (affinity or anti-affinity) - preview/confirm gated. rule_type "affinity" keeps the listed VMs together; "antiAffinity" keeps them apart (e.g. redundant appliance pairs on separate hosts). Requires >=2 distinct VMs, all members of the cluster. VM-Host rules hang off cluster VM/host groups and are not created here. Verify with list_drs_rules. Audited. Args: cluster: Exact cluster name. rule_name: Name for the new rule; must be unique on the cluster. rule_type: "affinity" or "antiAffinity". vm_names: VM names the rule governs (>=2, all in the clu…

Show 46 more tools
  • create_dvs_portgroup

    [WRITE] Create a VLAN-tagged portgroup on a dvSwitch - preview/confirm gated. confirm=False (default) validates everything (switch exists, name free, binding and VLAN legal) and returns the exact spec that WOULD be created without writing anything. confirm=True creates the portgroup and waits for the task. Verify afterwards with list_dvs_portgroups. Audited. binding="ephemeral" creates a portgroup with no pre-created port pool, attachable from the ESXi host client even when vCenter is down - use for a self-hosted VCSA's own management portgroup. num_ports is ignored for ephemeral. lateBindin…

  • create_vm

    [WRITE] Create a new empty VM with the given hardware sizing. Creates a powered-off VM with one disk and one NIC. To populate it, attach an ISO (attach_iso_to_vm) and power it on, or use deploy_vm_from_ova or clone_vm for a ready-to-run guest. Fails before creating anything if the datastore is not found. Returns a status string with the new VM name. Args: vm_name: Name for the new VM; must not already exist. cpu: vCPU count (default 2). memory_mb: Memory in MB (default 4096). disk_gb: Primary disk size in GB (default 40). network_name: Port group for the NIC (default "VM …

  • create_vm_plan

    [WRITE] Create an execution plan for multi-step VM operations. Use for 2+ steps or 2+ VMs. Validates actions, checks the targets exist in vSphere, and generates a plan with rollback info per 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. Returns plan dict with plan_id, steps, summary (vms_affected, irreversible_steps, rollback_avail…

  • create_vm_snapshot

    [WRITE] Create a snapshot of a VM. Returns a status string. Use this before a risky change so revert_vm_snapshot can undo it, then reclaim the space with delete_vm_snapshot — snapshots left for days grow delta disks and must not be treated as backups. Args: vm_name: VM to snapshot. snapshot_name: Snapshot name. description: Optional description. memory: Include memory state (heavier, allows resume). quiesce: Quiesce guest filesystem (requires running VMware Tools). target: vCenter/ESXi target name from config.

  • delete_clustercan change or delete data

    [WRITE] Delete an empty cluster (no hosts must remain). Without confirm=True this only previews: it returns blast_radius (cluster name and id, host/VM/datastore counts and names, blockers) and deletes nothing. Show that to the user and get their explicit decision. Do not set confirm=True on your own because the user asked earlier: they have not seen the preview yet. Refused: a cluster that still has hosts or VMs (evacuate members with remove_cluster_host first), or one whose members could not be read. Check get_cluster_info first. Returns a dict (action, blast_radius). Args: name: Name …

  • delete_drs_rulecan change or delete data

    [WRITE] Delete a VM-VM DRS rule - confirm-gated, guarded. REFUSES non-VM-VM rules: VM-Host rules can carry licensing/compliance placement constraints (must-run-on licensed hosts) and hang off cluster groups - manage those in the vSphere UI. The preview and result both record the full rule definition so a mistaken delete can be recreated from the audit trail. Audited. Args: cluster: Exact cluster name. rule_name: Exact rule name (see list_drs_rules). confirm: False (default) returns the blast radius and changes nothing. True deletes it. Do not set True because the user ask…

  • delete_vmcan change or delete data

    [WRITE] Delete a VM and its disks and snapshots (irreversible). Without confirm=True this only previews: it returns blast_radius (identity, host, disks, total size, snapshot count, blockers) and destroys nothing. Show that to the user and get their explicit decision. Do not set confirm=True on your own because the user said "delete" earlier: they have not seen what it destroys yet. To delete, call again with confirm=True and acknowledge_blast_radius set to the preview's acknowledge_with object, unchanged. The VM is re-measured first; if it changed (another snapshot, a different VM under the …

  • delete_vm_snapshotcan change or delete data

    [WRITE] Permanently delete a named snapshot, consolidating its delta disk into the parent. Without confirm=True this only previews: it returns blast_radius (VM and instance UUID, the snapshot's name, id and creation time, remove_children, how many child snapshots sit below it and how many snapshots would be removed) and deletes nothing. Show it to the user and get their decision. Do not set confirm=True on your own because the user asked earlier: they have not seen the preview yet. Frees disk space and does NOT change the VM's current state (unlike revert_vm_snapshot). Works while the VM is …

  • deploy_linked_clone

    [WRITE] Create a linked clone from a VM snapshot — near-instant, minimal disk usage. The clone writes to a copy-on-write delta over the source's base disk, so it depends on the source staying intact. Fastest provisioning for test/dev fleets; use clone_vm for fully independent copies. Requires the named snapshot — run list_vm_snapshots first. Returns a status string with the new clone name. Args: source_vm_name: Source VM name (must have at least one snapshot). snapshot_name: Clone base (from list_vm_snapshots). new_name: Name for the new linked clone; must not already exist. …

  • deploy_vm_from_ova

    [WRITE] Create a new VM by importing a local .ova file (OVF parse + VMDK upload). Use for local OVA files; for vSphere templates use deploy_vm_from_template, to copy an existing VM clone_vm. Returns a status string naming the new VM. Upload time scales with OVA size; fails before creating anything if the datastore is not found. Args: ova_path: Local path to the .ova file (must be readable by this server). vm_name: Name for the new VM; must not already exist. datastore_name: Target datastore (see browse_datastore). network_name: Port group every network in the OVF is mapped to…

  • deploy_vm_from_template

    [WRITE] Deploy a new VM by cloning from a vSphere template. Returns a status string. Use for VMs marked as templates; for a running source VM use clone_vm. Requires an existing template — convert_vm_to_template makes one. Args: template_name: Source vSphere template name. new_name: Name for the new VM. datastore_name: Target datastore (template's own if omitted). cpu: Override CPU count (optional). memory_mb: Override memory in MB (optional). power_on: Power on after deployment. snapshot_name: Snapshot the new VM with this name. target_host: ESXi host to place…

  • download_vm_guest_file

    [WRITE] Download a file from a VM and write it to a local path. Reads from the guest, writes the local filesystem — the write is why this is not a read tool. Returns a status string. Requires VMware Tools running in the guest OS. Use upload_vm_guest_file for the reverse direction; to capture command output use run_vm_guest_command_with_output instead — it redirects and downloads for you. Refuses a destination that already exists unless overwrite=True, and never writes through a symlink or over a directory. Pick a path that does not exist yet rather than passing overwrite=True by default. Ar…

  • get_access_inforead-only

    [READ] The account this server uses on a target, and whether it holds a tool's privileges. When to use: a tool failed with NoPermission, or before a write you want to know the configured account may run. Ask about one ``tool`` (e.g. clone_vm), or omit it to sort every tool of this server into granted / not granted / undetermined. What it returns: {target, account, checked_on, privileges {id: state}, and either ``tool`` {name, requires, verdict, meaning, missing_at_root} or the tools_* lists}, plus the account's direct permissions (role, on, propagate). Gotchas: privileges are checked on the…

  • get_cluster_health_summaryread-only

    [READ] One-glance health rollup for every cluster — "is anything on fire?". Aggregates hosts, VM power state, live CPU/memory pressure, triggered alarms and datastores thin-provisioned past 100% of capacity per cluster, assigns each a status ("ok"/"warn"/"critical"), and flattens the anomalies into a ranked ``top_issues`` focus list — the fast triage view for "what's wrong right now?". Read-only (delegates to the vmware-monitor library). Use it FIRST for a cross-cluster glance, then drill in with investigate_vm or investigate_host. Returns {totals, top_issues, issues_total, clusters, snapsho…

  • get_cluster_inforead-only

    [READ] Get detailed cluster information: member hosts, HA/DRS config, resource capacity. Read-only, no side effects. Use before add_cluster_host / remove_cluster_host (shows membership and per-host maintenance mode) and to verify configure_cluster changes. Args: name: Exact cluster name. target: vCenter target name from config.yaml; omit to use the default target. Returns: Dict with name, host_count, hosts (each: name, connection_state, power_state, maintenance_mode), ha_enabled, ha_admission_control, drs_enabled, drs_behavior, total/effective CPU (MHz) and memory (GB). …

  • get_cross_vcenter_attentionread-only

    [READ] "What needs attention now?" across EVERY configured vCenter — one list. Runs get_cluster_health_summary against every configured target and returns one globally ranked ``top_issues`` list (worst first, each tagged with its ``vcenter``) plus a per-target rollup — "where do I look first, anywhere in the estate?". Degrades gracefully: an unreachable target is listed under ``unreachable`` and the rest still aggregate, but it is never counted as healthy: ``totals.worst_status`` is at least ``warn`` (``critical`` when no target answered) and ``totals.status_reason`` says why. Delegates to th…

  • get_vm_task_statusread-only

    [READ] Poll a long-running vSphere task by its id (from an async delete_vm_snapshot). Use after delete_vm_snapshot returns a task id, instead of re-running the delete. Returns state (queued/running/success/error/gone), progress percent, and the entity name. 'gone' means vCenter does not know the id: the task finished and was garbage-collected, or the id is wrong. It says nothing about success — re-list the resource to confirm the final state. A failed task reports its fault under 'task_error'; a top-level 'error' key would mean this poll itself failed. Args: task_id: The task id string r…

  • investigate_datastoreread-only

    [READ] "What is happening around this datastore?" — one correlated drill-down. Correlates a datastore's capacity/free space/accessibility, the hosts that mount it, a rollup of the VMs it backs, alarms across datastore/host, and a merged **event timeline**. Delegates to the vmware-monitor library (read-only); do not dump the result raw. (Per-datastore latency is a separate perf report.) Use this AFTER get_cluster_health_summary flags storage pressure. Point-in-time. Args: datastore_name: Exact datastore name. Unknown names return a teaching error. target: Optional vCenter/ESXi target…

  • investigate_hostread-only

    [READ] "What is happening around this ESXi host?" — one correlated drill-down. Correlates a host's state (connection, CPU/memory, ESXi version, uptime), its cluster context, a rollup of the VMs it runs, the datastores it mounts, alarms across host/cluster/datastore, live performance, and a merged **event timeline**. Delegates to the vmware-monitor library (read-only); do not dump the result raw. Use this AFTER get_cluster_health_summary flags a host. Point-in-time. Args: host_name: Exact host name. Unknown names return a teaching error. target: Optional vCenter/ESXi target name from…

  • investigate_vmread-only

    [READ] "What is happening around this VM?" — one correlated drill-down. Correlates everything around one VM so you don't stitch it together yourself: the VM's state, its host, cluster context, backing datastores, snapshots, triggered alarms, live performance, and a merged **event timeline** across VM, host, cluster and datastores (newest first). Batched, cheap even on large fleets. Delegates to the vmware-monitor library (read-only). Explain the result in operational language; do not dump it raw. Use this AFTER get_cluster_health_summary points at a problem VM. Point-in-time. Args: vm_n…

  • list_drs_rulesread-only

    [READ] List a cluster's DRS rules: VM-VM affinity/anti-affinity and VM-Host. Per rule: key, name, type (affinity / antiAffinity / vmHost), enabled, mandatory, and the member VM names (VM-VM) or group names (VM-Host). The verify pair for create/delete/set_drs_rule_enabled. Args: cluster: Exact cluster name. target: vCenter target name from config.yaml; omit to use the default target. Returns: Dict with cluster, count, and rules sorted by name. Errors return a dict with "error" + hint.

  • list_dvs_portgroupsread-only

    [READ] List distributed virtual portgroups, optionally scoped to one dvSwitch. Per portgroup: name, parent dvSwitch, binding type (earlyBinding / ephemeral), VLAN setting (id, trunk ranges, or pvlan), configured port count, and whether it is the switch's uplink portgroup. Use to verify create_dvs_portgroup results or to survey network config before changes. Args: dvs_name: dvSwitch name to scope to; omit to list across all switches. limit: Max portgroups to return (default 200). offset: Skip this many portgroups first (paging). target: vCenter target name from config.yaml; om…

  • list_host_vmksread-only

    [READ] List VMkernel adapters, optionally scoped to one ESXi host. Per vmk: device, IP/netmask/dhcp, MTU, MAC, portgroup (standard or DVS), netstack, and which host services it is selected for (management, vmotion, vsan, ...). The verify pair for add_host_vmk/remove_host_vmk. Gotcha - this list is not automatically a complete estate inventory. vCenter answers property reads for a host it has lost contact with out of its own cache, so hosts it never reached appear here as rows with `reachable: false`, `device: null` and a `note` naming the connectionState, rather than being dropped. Check `ho…

  • list_vcenter_alarmsread-only

    [READ] List active/triggered alarms across the vCenter inventory. Start here for alarm work: it supplies the exact entity_name/alarm_name pair that acknowledge_vcenter_alarm and reset_vcenter_alarm require. Returns the list envelope: 'items' holds severity (critical/warning/info), entity name and type, alarm name, acknowledged flag, and trigger time; 'returned'/'limit'/'total'/'truncated'/'hint' state completeness, so a limited page is never mistaken for the whole picture. 'total' is the real active-alarm count — every alarm is collected before the limit is applied. Args: target: Option…

  • list_vm_plansread-only

    [READ] List all pending/failed plans. Use this first to find a plan_id for apply_vm_plan or rollback_vm_plan. Returns the list envelope: 'items' holds plan summaries (plan_id, created_at, status, steps count, VMs affected), and 'returned'/'total'/ 'truncated' state whether the listing is complete. Every plan file is read, so truncated is always false. Listing never deletes: stale plans (>24h) are swept by create_vm_plan, not by this tool.

  • list_vm_snapshotsread-only

    [READ] List the full snapshot tree of a VM, including nested child snapshots. Read-only, no side effects. Call this before revert_vm_snapshot, delete_vm_snapshot, or deploy_linked_clone to get exact snapshot names. 'items' is empty when the VM has no snapshots. Args: vm_name: Exact VM name as shown in vCenter inventory. target: vCenter/ESXi target name from config.yaml; omit to use the default target. Returns: The list envelope. 'items' is one dict per snapshot: name, description, created, state (power state at snapshot time), level (0 = root). The whole tree is walked, …

  • list_vm_ttlsread-only

    [READ] List all VMs with TTLs registered, including expiry time and status. Use this first to find the exact vm_name for cancel_vm_ttl. Returns the list envelope: 'items' holds TTL entries with remaining_minutes and expired flag, and 'returned'/'total'/'truncated' state whether the listing is complete. The whole TTL store is read, so truncated is always false.

  • migrate_vm

    [WRITE] Migrate (vMotion) a VM to another host, optionally with storage vMotion. Without confirm=True this only previews: it returns blast_radius (VM and instance UUID, source host and datastores, target host with its connection and maintenance state, target datastore, and live vMotion vs cold migration) and moves nothing. Show it to the user and get their decision. Do not set confirm=True on your own because the user asked earlier: they have not seen the preview yet. Refused: a target host that is not found, not connected, in maintenance mode or has no resource pool; a target datastore that…

  • ping_from_vmkread-only

    [READ] DF-bit-capable ping sourced from a host vmk - MTU path validation. Runs `esxcli network diag ping` on the ESXi host through the vSphere API (no host SSH). df=True sets Don't-Fragment so an oversized packet FAILS instead of fragmenting - that failure is the diagnostic: - df=True size=1572 proves a >=1600 MTU path (overlay/TEP floor) - df=True size=8972 proves full jumbo (9000 minus 28 bytes overhead) A too-big result reports 'Message too long' in the fault field rather than erroring - read success + fault together. Args: host_name: ESXi host to source the ping from. source_vmk:…

  • power_off_vmcan change or delete data

    [WRITE] Power off a VM — graceful guest shutdown by default, hard power-off with force=True. Without confirm=True this only previews: it returns blast_radius (VM name and instance UUID, host, power state, VMware Tools status, and whether this is a guest shutdown or a hard power-off) and changes nothing. Show it to the user and get their decision. Do not set confirm=True on your own because the user asked earlier: they have not seen the preview yet. Graceful mode calls VMware Tools guest shutdown and waits up to 120s; if it does not finish, action is "still_running". Refused: a graceful shutd…

  • power_on_vm

    [WRITE] Power on a virtual machine. Returns a status string; an already-on VM is a no-op. Reverse with power_off_vm. Call this first when a VM is off: guest tools such as run_vm_guest_command only work once VMware Tools has finished booting. Args: vm_name: Exact name of the virtual machine. target: Optional vCenter/ESXi target name from config. Uses default if omitted.

  • provision_vm_guestcan change or delete data

    [WRITE] Provision a VM by running an ordered sequence of guest operations. Prefer this over repeated run_vm_guest_command / upload_vm_guest_file calls when the steps form one provisioning run. Steps stop on the first failure, so a partial run leaves the guest half-configured. Requires VMware Tools running in the guest. Without confirm=True this only previews: blast_radius names the VM (name, instance UUID), the guest account and every step it would run, in order, with counts per type, local file sizes and any blockers; nothing runs. Show it to the user. Do not set confirm=True on your own be…

  • reconfigure_vm

    [WRITE] Change a VM's vCPU count and/or memory. Pass only the fields you want to change; omitted fields are left untouched. Hot-add of CPU/memory requires it to be enabled on the VM and a running guest; otherwise power the VM off first (power_off_vm). Args: vm_name: Exact name of the VM to reconfigure. cpu: New vCPU count; omit to leave unchanged. memory_mb: New memory in MB; omit to leave unchanged. target: vCenter/ESXi target name from config.yaml; omit to use the default target. Returns: Status string describing the applied change, or a VM-not-found error.

  • remove_cluster_hostcan change or delete data

    [WRITE] Remove a host from a cluster (host must be in maintenance mode). Without confirm=True this only previews: it returns blast_radius (host name and id, maintenance mode, VM count, powered-on VM count, blockers) and moves nothing. Show that to the user and get their explicit decision. Do not set confirm=True on your own because the user asked earlier: they have not seen the preview yet. Refused: a host not in maintenance mode, a host with powered-on VMs, and a host whose state could not be read. Run get_cluster_info first for the exact member host names. The host is not deleted — it stay…

  • remove_host_vmkcan change or delete data

    [WRITE] Remove a VMkernel adapter - confirm-gated, guarded, fail-closed. REFUSES (unless force_unprotected=True) when the vmk is selected for any host service (management/vmotion/vsan/...), lives on a non-default netstack (NSX TEPs on vxlan, dedicated vmotion/provisioning stacks - never visible in the service map), carries a default gateway route, or when any of that CANNOT be verified - unverifiable is treated as unsafe, never as clear. Test vmks created by add_host_vmk trip none of these and remove cleanly without force. ABSOLUTE, no override: the host's only management-enabled vmk is neve…

  • reset_vcenter_alarmcan change or delete data

    [WRITE] Clear triggered vCenter alarms back to normal state. Use this after resolving the underlying issue; to merely mark an alarm seen use acknowledge_vcenter_alarm instead. Get entity_name and alarm_name from list_vcenter_alarms first. vSphere has no per-alarm clear: this clears EVERY triggered alarm with the named alarm's status (red/yellow) on its entity type (host/VM/all), usually more than the one named. Without confirm=True this only previews: it returns blast_radius with will_clear_count and the alarms it would clear, and changes nothing. Show it to the user and get their decision; …

  • restore_vm_clean_slatecan change or delete data

    [WRITE] Revert a VM to its baseline snapshot (Clean Slate). Without confirm=True this only previews: it returns blast_radius (VM identity, power state and whether it is powered off first, the snapshot and when it was taken, snapshot count, blockers) and changes nothing. Show that to the user and get their explicit decision. Do not set confirm=True on your own because the user asked earlier: they have not seen the preview yet. With confirm=True: 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 c…

  • revert_vm_snapshotcan change or delete data

    [WRITE] Revert a VM to a named snapshot (loses changes since snapshot). Without confirm=True this only previews: it returns blast_radius (VM and instance UUID, the snapshot's name, id and creation time, total snapshot count, current power state and the power state after the revert) and changes nothing. Show it to the user and get their decision. Do not set confirm=True on your own because the user asked earlier: they have not seen the preview yet. Irreversible — everything written since the snapshot is lost. Refused: a snapshot name that is not found, a name that matches more than one snapsh…

  • rollback_vm_plancan change or delete data

    [WRITE] Rollback executed steps of a failed plan in reverse order. Without confirm=True this only previews: it returns blast_radius listing the rollback steps that would run (in order, with the VMs a rollback deletes) and those skipped as irreversible — and runs nothing. Show that to the user and get their explicit decision. Do not set confirm=True on your own because the user asked earlier: they have not seen the preview yet. Only call this after apply_vm_plan returns status='failed'; check list_vm_plans first for the plan_id. Irreversible steps (delete_vm, revert_snapshot, etc.) are skippe…

  • run_vm_guest_commandcan change or delete data

    [WRITE] Execute a command inside a VM via VMware Tools. Requires VMware Tools running in the guest OS. Returns exit_code, stdout, stderr, timed_out, and blast_radius. Without confirm=True this only previews: blast_radius names the VM (name, instance UUID), the guest account, the exact command, arguments and working directory, VMware Tools status and any blockers; nothing runs. Show it to the user. Do not set confirm=True on your own because the user asked earlier: they have not seen the preview yet. Refused outright: VM not powered on, VMware Tools not running, an identity or status that can…

  • run_vm_guest_command_with_outputcan change or delete data

    [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. Prefer this over run_vm_guest_command whenever you need the output. Requires VMware Tools running and a writable temp directory in the guest. Returns exit_code, stdout, stderr, timed_out, os_family, and blast_radius. Without confirm=True this only previews: blast_radius names the VM (name, instance UUID), the guest account, the e…

  • scan_all_datastore_imagesread-only

    [READ] Scan all accessible datastores for deployable images (OVA/ISO/OVF/VMDK). Returns the images found and refreshes the cache at ~/.vmware-aiops/image_registry.json. Use this when you do not know which datastore holds an image; prefer browse_datastore once you do, because this walks every datastore and may take minutes on a large estate. Args: target: Optional vCenter/ESXi target name from config. Returns: The family list envelope {items, returned, limit, total, truncated, hint} plus `last_scan`; each item is one image. `images` is kept as a deprecated alias for `items`.

  • set_drs_rule_enabled

    [WRITE] Enable or disable an existing DRS rule - preview/confirm gated. The day-2 toggle: anti-affinity rules often must be disabled while a cluster is temporarily too small to satisfy them, then re-enabled when hosts return. Idempotent - matching state returns a noop, no write. Names are matched exactly; ambiguous names refuse. Audited. Args: cluster: Exact cluster name. rule_name: Exact rule name (see list_drs_rules). enabled: True enables the rule; False disables it. confirm: False (default) returns the blast radius and changes nothing. True applies it. Do not set …

  • set_vm_ttlcan change or delete data

    [WRITE] Set a Time-To-Live (TTL) for a VM. The daemon auto-deletes it when expired. Without confirm=True this only previews: it returns blast_radius — the VM that will be deleted (identity, host, disks, total size, snapshot count), when (expires_at), and any TTL it replaces — and schedules nothing. Show that to the user and get their explicit decision. Do not set confirm=True on your own because the user asked earlier: they have not seen the preview yet. Refused when the VM's identity or disks cannot be read. Use this for short-lived lab VMs so cleanup is not forgotten; cancel with cancel_vm…

  • set_vmk_service

    [WRITE] Enable/disable a host service on an existing vmk - preview/confirm gated. Completes the add_host_vmk story: adapters are created serviceless by design, then tagged here (e.g. enable "vmotion" on a new vMotion vmk). Idempotent - re-applying the current state returns a no-write noop. Verify with list_host_vmks (the services field). Audited. Valid services are the vSphere nicType names: management, vmotion, vsan, vSphereProvisioning, faultToleranceLogging, vSphereReplication, vSphereReplicationNFC, vSphereBackupNFC, ptp, and the nvme/vsan variants. Note "vSphereProvisioning", not "provi…

  • upload_vm_guest_filecan change or delete data

    [WRITE] Upload a file from local machine to a VM via VMware Tools. Returns a dict with action, message and blast_radius (a status string before the confirmation gate). Requires VMware Tools running in the guest OS. An existing file at guest_path is replaced. Use download_vm_guest_file for the reverse direction, and provision_vm_guest instead when uploads and commands belong to one ordered provisioning run. Without confirm=True this only previews: blast_radius names the VM (name, instance UUID), the guest account, the local path and size, the guest path, VMware Tools status and any blockers; …

Signals

Stars
79
Forks
10
Open issues
1
Contributors
6
Weekly downloads
731
Last commit
Oct 23, 2026 (5 days ago)
Last release
Oct 19, 2026 (10 days ago)
Last package publish
Oct 19, 2026 (10 days ago)

From GitHub (fetched Oct 24, 2026) and the package registry.

Details

Registry name
io.github.vmware-skills/vmware-aiops
Version
2.4.2
Auth
No auth
Packages
pypi vmware-aiops
License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from vmware-skills

Cite this page

VMware AIops MCP server. Agent Mart. https://agentmart.dev/connectors/vmware-skills-vmware-aiops (last updated 2026-10-24)