Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

VMware AIops

PYPI · VMWARE-AIOPS

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

Available components

−15 this week 60 Trust /100

Last scanned (5 hours ago)

Scores higher than 58% of PyPI servers

Category Cloud Infrastructure

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security50
  • Malware scan not yet available for this package.Unverified
  • No known CVEs affecting this package version or its production dependencies.Pass
  • Runs hatchling.build at install time, a recognised build step with no custom scripting around it. View diagnostics → Pass
  • 4 of 48 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency48
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 17 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability66
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 14973 tokens (~245/item across 61 items; 61 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management37
  • Stability check failed: the tool surface changed between 1.12.0 and 2.4.2: 38 tool removals, 0 breaking changes, 39 additions. See how to fix → Fail
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
  • Structured output schemas are declared (30% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 10 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 62 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 5 Nov 26 −15
    • Malware scan: pass → unverified ▼ security
  • 3 Nov 26 +16
    • Malware scan: unverified → pass ▲ security
  • 2 Nov 26 −1

    No change was recorded against any check on this day. Stability & Change Management went from 37 to 33.

  • 31 Oct 26 −14
    • Malware scan: pass → unverified ▼ security
    • Security disclosure: unverified → pass ▲ functional
  • 30 Oct 26 −1
    • Security disclosure: pass → unverified ▼ functional
  • 29 Oct 26 +15
    • Malware scan: unverified → pass ▲ security
  • 27 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 33 to 37.

  • 26 Oct 26 −1

    No change was recorded against any check on this day. Stability & Change Management went from 37 to 33.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Nov 2026 · Analysed pypi/vmware-aiops@2.4.2

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem pypi
Reason No attestation published

Background: How many MCP packages publish verified provenance →

Install scripts 1 script
Hook Tier Command
build_backend allowlisted hatchling.build

Background: Why install scripts are a supply-chain risk →

Dependencies 48 packages
Packages resolved 48
Stale 4
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 61 exposed · ~14,701 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
reset_vcenter_alarm ~263

[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; do not set confirm=True on your own. Refused when the list of alarms cannot be read. Returns: Dict with action (preview, reset), blast_radius, and on reset the scope cleared.

NameTypeReqDescription
alarm_namestringyesExact alarm definition name from list_vcenter_alarms output.
confirmboolean–False (default) returns the blast radius and changes nothing. True clears.
entity_namestringyesName of the entity with the alarm (VM name, host name, or cluster name).
target––Optional vCenter target name from config.

No output schema declared.

No examples provided.

restore_vm_clean_slate ~284

[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 completes. Irreversible — everything written since the snapshot is lost. Refused: no snapshot of that name, more than one, a VM whose state cannot be read, or a rules.yaml deny on power_off_vm or revert_vm_snapshot (the preview lists it as a blocker). Returns a dict (action, blast_radius).

NameTypeReqDescription
confirmboolean–False (default) returns the blast radius and changes nothing. True applies it.
snapshot_namestring–Snapshot name to revert to (default: "baseline").
target––Optional vCenter/ESXi target name from config.
vm_namestringyesName of the VM to revert.

No output schema declared.

No examples provided.

revert_vm_snapshot ~270

[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 snapshot on the VM (vSphere allows duplicates; rename one first), and a VM whose snapshot tree, identity or power state cannot be read. Run list_vm_snapshots first for exact names. To reclaim space without changing state use delete_vm_snapshot. Returns: Dict with action (preview, reverted), blast_radius, and result.

NameTypeReqDescription
confirmboolean–False (default) returns the blast radius and changes nothing. True applies it.
snapshot_namestringyesSnapshot to revert to.
target––vCenter/ESXi target name from config.
vm_namestringyesVM to revert.

No output schema declared.

No examples provided.

rollback_vm_plan ~302

[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 skipped with a warning. Each destructive rollback step (power off, delete snapshot, cluster delete, host removal) is measured as its own tool measures it, in the preview and again just before it runs; a refused check stops the rollback there and the plan stays 'failed'. Refused on a target other than the one the plan was created against, and for any rollback step ~/.vmware/rules.yaml denies for its own tool (deleting a VM the plan created is authorized as delete_vm).

NameTypeReqDescription
confirmboolean–False (default) returns the blast radius and changes nothing. True applies it.
plan_idstringyesThe plan ID of the failed plan.
target––The vCenter/ESXi target the plan was created against.

No output schema declared.

No examples provided.

run_vm_guest_command ~345

[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 cannot be read, or a name that matches more than one VM. Note: the Guest Ops API does not capture stdout/stderr directly, so use this only for fire-and-forget commands — prefer run_vm_guest_command_with_output whenever you need the output.

NameTypeReqDescription
argumentsstring–Command arguments (e.g. "-c 'whoami'").
commandstringyesFull path to program (e.g. "/bin/bash", "C:\Windows\System32\cmd.exe").
confirmboolean–False (default) returns the blast radius and changes nothing. True applies it.
passwordstring–Guest OS password.
target––Optional vCenter/ESXi target name from config.
usernamestringyesGuest OS account to run as. Required — there is no default, so a call can never act as root without choosing root.
vm_namestringyesTarget VM name.
working_directory––Working directory inside guest (optional).

No output schema declared.

No examples provided.

run_vm_guest_command_with_output ~373

[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 exact command and the shell it runs through, 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 unreadable identity or status, a name that matches more than one VM, or a rules.yaml deny on run_vm_guest_command or download_vm_guest_file (the preview lists it as a blocker).

NameTypeReqDescription
commandstringyesShell command (e.g. "df -h", "ls /etc", "ipconfig").
confirmboolean–False (default) returns the blast radius and changes nothing. True applies it.
passwordstring–Guest OS password.
target––Optional vCenter/ESXi target name from config.
timeoutinteger–Max wait seconds (default 300).
usernamestringyesGuest OS account to run as. Required — there is no default, so a call can never act as root without choosing root.
vm_namestringyesTarget VM name.

No output schema declared.

No examples provided.

scan_all_datastore_images ~157

[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. 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`.

NameTypeReqDescription
target––Optional vCenter/ESXi target name from config.

No output schema declared.

No examples provided.

set_drs_rule_enabled ~226

[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. Returns: Preview dict (action="preview"), noop dict (action="noop"), or result dict (action="set", rule_now). Errors return "error" + hint.

NameTypeReqDescription
clusterstringyesExact cluster name.
confirmboolean–False (default) returns the blast radius and changes nothing. True applies it. Do not set True because the user asked earlier; they have not seen the preview yet.
enabledbooleanyesTrue enables the rule; False disables it.
rule_namestringyesExact rule name (see list_drs_rules).
target––vCenter target name from config.yaml; omit to use the default target.

No output schema declared.

No examples provided.

set_vm_ttl ~283

[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_ttl and review pending expiries with list_vm_ttls. The scheduler daemon must be running (`vmware-aiops daemon start`) or nothing is ever deleted; it powers a running VM off first. TTLs persist in ~/.vmware-aiops/ttl.json. Returns a dict (action, blast_radius).

NameTypeReqDescription
confirmboolean–False (default) returns the blast radius and changes nothing. True applies it.
minutesintegeryesMinutes until deletion (minimum 1).
target––Optional vCenter/ESXi target name from config.
vm_namestringyesName of the VM to auto-delete.

No output schema declared.

No examples provided.

set_vmk_service ~391

[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 "provisioning". FAIL CLOSED: refuses both directions when the host's service map cannot be read. ABSOLUTE, no override: disabling management on the host's only management-enabled vmk - the call rides the interface it would untag. Returns: Preview dict (action="preview"), noop dict (action="noop") when the state already matches, or result dict (action="set", services_now). Errors return a dict with "error" + hint.

NameTypeReqDescription
confirmboolean–False (default) returns the blast radius and changes nothing. True applies it. Do not set True because the user asked earlier; they have not seen the preview yet.
enabledbooleanyesTrue selects the vmk for the service; False deselects.
host_namestringyesESXi host the vmk lives on.
servicestringyesService/nicType name to enable or disable.
target––vCenter target name from config.yaml; omit to use the default target.
vmkstringyesDevice name to change (e.g. "vmk3").

No output schema declared.

No examples provided.

upload_vm_guest_file ~326

[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; nothing is transferred. 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, a local file that is missing or unreadable, an unreadable identity or status, or a name that matches more than one VM.

NameTypeReqDescription
confirmboolean–False (default) returns the blast radius and changes nothing. True applies it.
guest_pathstringyesDestination path inside the guest.
local_pathstringyesLocal file path to upload.
passwordstring–Guest OS password.
target––Optional vCenter/ESXi target name from config.
usernamestringyesGuest OS account to run as. Required — there is no default, so a call can never act as root without choosing root.
vm_namestringyesTarget VM name.

No output schema declared.

No examples provided.

Install

How do I install the VMware AIops MCP server?

VMware AIops runs locally as a PyPI package, launched with uvx vmware-aiops. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

pypi · vmware-aiops

# add to Claude Code
claude mcp add vmware-skills-vmware-aiops -- uvx vmware-aiops
Common questions

What is the VMware AIops MCP server?

VMware AIops is an MCP server listed in the public MCP registry as io.github.vmware-skills/vmware-aiops. AI-powered VMware vCenter/ESXi VM lifecycle and deployment with 61 MCP tools. This page covers its PyPI package (vmware-aiops).

Is the VMware AIops MCP server safe to use?

VMware AIops scores 60 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the VMware AIops MCP server expose?

VMware AIops exposes 61 tools: get_access_info, list_vcenter_alarms, acknowledge_vcenter_alarm, reset_vcenter_alarm, create_cluster, and 56 more. Their descriptions and schemas cost roughly 14,701 tokens of context every time the server is loaded.

Is the VMware AIops MCP server still maintained?

VMware AIops is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the VMware AIops MCP server under?

VMware AIops declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.