mcp-vmware
Provides tools for managing VMware vCenter environments, including VM inventory, power operations, snapshots, clone, migration, cluster configuration (HA, DRS, affinity rules), ESXi host management (maintenance mode, services, firewall, storage, advanced settings), and role-based access control with four permission levels.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-vmwarelist all VMs in the datacenter"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-vmware
MCP server to pilot a VMware vCenter (vSphere 7/8) from Claude Code or any MCP client, with two deployment modes depending on your network topology:
Direct: the machine running the MCP client has a route to vCenter (homelab, admin workstation). Up and running in 2 minutes via Docker or pip.
Jump host: the workstation has no access to the management network (a common enterprise setup). The server runs on a bastion machine and the client talks to it over SSH stdio — vCenter credentials never leave the secured zone.
Highlights:
39 tools covering VMs (inventory, power, snapshots, clone, migration), clusters (HA, DRS, affinity rules) and ESXi hosts (maintenance, services, firewall, storage, advanced settings — esxcli equivalent through the official API, no SSH to the hosts).
4 roles with permission groups (viewer/operator/vm_admin/infra_admin): tools outside the active role are not even exposed to the LLM.
LLM ergonomics: compact markdown or structured JSON listings (structuredContent), uniform pagination, real-time progress for long operations.
API map versioned to the vCenter build: the full API surface (1409 SOAP methods, 1064 REST operations) is mapped and versioned; the coverage matrix drives the server's evolution.
Quick start (direct access to vCenter)
cp .vcenter.env.example .vcenter.env && chmod 600 .vcenter.env && vi .vcenter.env
# Docker / Podman (nothing else to install):
docker build -t mcp-vmware -f Containerfile .
docker run -i --rm --env-file .vcenter.env mcp-vmware
# or with Python (>= 3.12):
pip install . && MCP_VMWARE_ENV_FILE=./.vcenter.env python -m mcp_vmwareDeclaration in .mcp.json (the MCP client talks stdio to the container):
{
"mcpServers": {
"vmware": {
"command": "docker",
"args": ["run", "-i", "--rm", "--env-file", "/path/.vcenter.env", "mcp-vmware"]
}
}
}Building behind a corporate proxy (TLS interception included):
docker build --network=host \
--build-arg http_proxy --build-arg https_proxy --build-arg no_proxy \
--build-arg PIP_TRUSTED_HOST="pypi.org files.pythonhosted.org" \
-t mcp-vmware -f Containerfile .Related MCP server: vSphere MCP Server
Jump host mode (segmented enterprise networks)
When vCenter lives in a management network unreachable from workstations, the server installs on the official jump host. MCP speaks stdio over SSH natively: no tunnel, no exposed port.
Workstation (Claude Code / MCP client)
| spawn: ssh jumphost VMware/mcp-vmware/run.sh (stdio = MCP protocol)
v
jumphost (Linux, Python 3.12 venv)
| pyvmomi (SOAP vim25)
v
vcenter.example.com (vSphere 8)Benefits: network segmentation respected, credentials confined to the jump host
(~/VMware/.vcenter.env, chmod 600, never in the repo nor on the workstation),
single audit point.
# 1. Jump host: venv (once)
ssh jumphost 'mkdir -p ~/VMware && python3.12 -m venv ~/VMware/venv'
# 2. Credentials on the jump host
scp .vcenter.env.example jumphost:VMware/.vcenter.env
ssh jumphost 'chmod 600 ~/VMware/.vcenter.env && vi ~/VMware/.vcenter.env'
# 3. Deploy the server (rsync + pip install -e)
./deploy.sh
# 4. Adjust .mcp.json:
# {"mcpServers": {"vmware": {"command": "ssh",
# "args": ["jumphost", "VMware/mcp-vmware/run.sh"]}}}Quick check outside any MCP client:
ssh jumphost 'VMware/mcp-vmware/run.sh' <<'EOF'
{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"0"}}}
EOFRoles and permission groups
Access is driven by MCP_VMWARE_ROLE in .vcenter.env (see docs/roles.md
for details and the matching vCenter privilege templates):
Role | Exposed tools | Scope |
| 20 | read-only over everything (inventory + host config) |
| 24 | + VM power and snapshots |
| 28 | + VM reconfiguration, clone, delete, migration |
| 39 | + cluster HA/DRS/rules, host operations and fine-grained host config (esxcli equivalent) |
Tools outside the role are not registered: the LLM never sees them in
tools/list. Additional protections: vmware_delete_vm,
vmware_host_maintenance (enter) and vmware_host_power require
confirm=true; host reboot/shutdown is refused outside maintenance mode unless
force=true.
Defense in depth: use a vCenter service account whose vSphere role matches the
ceiling of the MCP role (templates in docs/roles.md), one env file per
account (MCP_VMWARE_ENV_FILE).
Versioned API map (drives the evolution)
The server's evolution is driven by a complete map of the API, versioned to the vCenter build:
tools/build_api_map.py(run wherever vCenter is reachable) generatesapi-map/<version>-<build>/: the full vim25 SOAP surface (pyvmomi introspection) and the REST vAPI surface (live vCenter metamodel).api-map/coverage.yamllinks each API area to an MCP tool with a status (todo / in_progress / done / wontdo) and carries the v2 backlog.On every vCenter upgrade: rerun the script, commit the new snapshot, and the git diff shows how the API evolved.
Development
./.venv/bin/ruff check src tools tests && ./.venv/bin/ruff format src tools tests
./.venv/bin/mypy src
./.venv/bin/pytest # local suite, mocked pyvmomi, no vCenter requiredAdding a tool: implement it in the relevant tools_*.py module with the
tool(name, title, group=...) decorator (write tools call _gate() first),
update api-map/coverage.yaml in the same commit, deploy, smoke test.
See CONTRIBUTING.md and CODE_OF_CONDUCT.md.
Security & supply chain
Standard supply-chain hygiene, all with SHA-pinned GitHub Actions:
CodeQL static analysis (SAST) on every push/PR and weekly.
OpenSSF Scorecard weekly, results published.
Dependabot for Python and GitHub Actions updates.
Dependency Review on pull requests (fails on high-severity additions).
SPDX license headers on every source file.
Signed commits expected from contributors (see CONTRIBUTING.md).
Minimal workflow permissions (
contents: readby default).
Report vulnerabilities privately: see SECURITY.md.
Disclaimer
This is a personal, independent project — my own take on an MCP server for vCenter. It is not an official product and is not affiliated with, endorsed by, or supported by VMware, Broadcom, Anthropic, or any employer.
Provided "as is", without warranty of any kind (see LICENSE). Use at your own risk.
No support and no SLA. Issues and pull requests are welcome and handled on a best-effort basis, on my own time — there is no guarantee of a response or a fix.
Not production-hardened. This server gives an LLM the ability to act on virtualization infrastructure. Review the code before running it, start with the
viewerrole, use a vCenter service account whose privileges match the chosen role (docs/roles.md), and only raise privileges after validating the write tools on a disposable test scope. You are responsible for any action it performs on your environment.Trademarks (VMware, vSphere, vCenter, ESXi) belong to their respective owners and are used here for identification only.
Available Tools
20 toolsvmware_drs_recommendationsARead-only
Lists the pending DRS recommendations of a cluster (proposed migrations).
Returns a JSON {cluster, count, recommendations:[{key, type, reason, target, actions:[...]}]}. Apply afterwards with vmware_apply_drs_recommendation (cluster.ops).
| Name | Required | Description | Default |
|---|---|---|---|
| cluster | Yes | Cluster name | |
| refresh | No | Force a recomputation before reading |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false. The description adds that the refresh parameter forces a recomputation, a behavioral detail, and outlines the return structure. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: one for purpose, one for output and next step. Every word adds value, no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides purpose, output format, and a suggested next step. Lacks error conditions or when to use refresh, but given the simplicity and annotations, it is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with descriptions for both parameters (cluster and refresh). The tool description does not add further parameter details beyond the schema, so a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists pending DRS recommendations of a cluster, with a specific verb 'Lists' and resource 'pending DRS recommendations'. It distinguishes from sibling list tools by focusing on DRS-specific migrations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description suggests applying recommendations afterward with vmware_apply_drs_recommendation, implying a workflow. However, it does not explicitly state when to use this tool versus alternatives or when to avoid it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vmware_get_cluster_configARead-onlyIdempotent
Detailed HA (DAS) and DRS configuration of a cluster + failover capacity.
Returns a JSON {name, ha:{enabled, admission_control_enabled, failover_level, restart_priority, current_failover_level}, drs:{enabled, behavior, vmotion_rate}, rules_count}.
| Name | Required | Description | Default |
|---|---|---|---|
| cluster | Yes | Cluster name (see vmware_list_clusters) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds value by detailing exactly which configuration fields are returned (HA, DRS, rules_count, failover level), providing context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise, using two short paragraphs. It front-loads the purpose and then lists the return JSON structure without any unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (returns structured HA and DRS data) and presence of output schema and annotations, the description covers all essential aspects: input (cluster name), output format, and configuration details. No gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema coverage and one parameter, the baseline is 3. The description adds minimal extra meaning—only referencing vmware_list_clusters for obtaining the cluster name. No further elaboration on parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns detailed HA (DAS) and DRS configuration and failover capacity of a cluster, and specifies the exact JSON structure. This distinguishes it from siblings like vmware_drs_recommendations and vmware_list_clusters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly guides usage by noting the cluster parameter comes from vmware_list_clusters and the output provides config details. It does not explicitly state when to use vs alternatives or when not to use, but the prerequisite is mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vmware_get_hostARead-onlyIdempotent
Details of an ESXi host: state, uptime, hardware, hosted VMs, mounted datastores.
Returns a JSON {name, moid, connection_state, power_state, in_maintenance, in_quarantine, boot_time, uptime_hours, version, model, cpu, memory, vms:[...], datastores:[...], networks:[...]}.
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | Host name (see vmware_list_hosts) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint, idempotentHint, and non-destructive. The description adds the exact output structure and fields returned, providing behavioral context beyond annotations. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first states purpose and scope, second enumerates output fields. No fluff, every word earns its place. Front-loaded with key purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only detail tool, it covers purpose, input, and output clearly. Has output schema and description lists fields. No missing context for proper invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Single 'host' parameter with schema description that references vmware_list_hosts, adding practical guidance. With 100% schema coverage, the description adds value by telling how to find valid host names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it returns details of an ESXi host including state, uptime, hardware, VMs, and datastores. Distinguishes from sibling tools like vmware_list_hosts (list) and vmware_host_health (specific subsystem).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage after identifying a host from vmware_list_hosts but does not explicitly state when to use vs alternatives like vmware_get_vm or vmware_host_advanced_settings. No when-not or exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vmware_get_vmARead-onlyIdempotent
Full details of a VM: config, CPU/RAM, disks, NICs, guest IPs, snapshots.
Returns a structured object with uuid, path, hardware_version, disks[], nics[], guest_ips[], snapshots[] (tree), resource_pool, folder, on top of the standard summary.
| Name | Required | Description | Default |
|---|---|---|---|
| vm | Yes | Exact name or MoID (e.g. vm-123) of the VM |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the agent knows this is a safe read operation. The description adds valuable context about the return structure and fields, going beyond annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler. The first sentence lists key items, the second specifies the structured object. Information is front-loaded and every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (though not shown), the description provides sufficient overview of return fields. The parameter is well-documented, annotations cover safety, and sibling tools are contextually irrelevant. No gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema provides 100% coverage for the single required parameter 'vm', with description 'Exact name or MoID (e.g. vm-123) of the VM'. The description does not add further parameter info but the baseline is 3 due to high schema coverage; however, the schema description itself is clear, and the tool description reinforces the scope, justifying a 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it provides 'Full details of a VM' listing specific components (config, CPU/RAM, disks, NICs, guest IPs, snapshots). This distinguishes it from sibling tools like vmware_list_vms which likely only return summaries or lists, and from other get tools focusing on different entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving detailed information about a single VM, but does not explicitly state when to use this tool versus alternatives (e.g., vmware_list_vms for listing). No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vmware_host_advanced_settingsARead-onlyIdempotent
Advanced settings of a host (equivalent of esxcli system settings advanced list), filtered by key prefix.
Returns a structured object {host, filter, count, settings:[{key, value}]}. Modify with vmware_host_set_advanced_setting (host.config).
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | Name of the ESXi host | |
| filter_prefix | Yes | Key prefix, e.g. Net., Mem., NFS., UserVars. (required, >1000 settings) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior. Description adds value by specifying the return structure and equivalent esxcli command, confirming it's a safe read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each serving a purpose: purpose, return structure, modification alternative. No redundancy and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given high schema coverage, rich annotations, and output schema implied, the description is complete. It covers reading, filtering, output format, and modification, making it fully actionable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers both parameters fully, but description adds examples of prefix values and notes the large number of settings, aiding selection. This exceeds mere schema repetition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it lists advanced settings of a host, equivalent to a specific esxcli command, with key prefix filtering. It distinguishes from sibling tools by specifying its focus on advanced settings, not other host configuration areas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context: it lists settings filtered by prefix and mentions the modification counterpart. However, it does not explicitly exclude scenarios or provide when-not-to-use guidance relative to siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vmware_host_firewallARead-onlyIdempotent
Firewall of a host (equivalent of esxcli network firewall): default policy and rulesets.
Returns a structured object {host, default_policy, count, rulesets:[{key, label, enabled, all_ips_allowed, allowed_ips}]}. Toggle with vmware_host_firewall_ruleset.
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | Name of the ESXi host | |
| enabled_only | No | Show only enabled rulesets |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds context beyond annotations (readOnlyHint, etc.) by specifying the equivalent command, return structure, and that toggling is done elsewhere. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with three sentences: purpose, return structure, and sibling reference. Information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists and the tool is read-only with only two parameters, the description provides enough context. It could mention prerequisites, but it is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description does not add significant meaning beyond what the schema already provides for the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool is for a host firewall (equivalent to esxcli network firewall) and lists the return structure. It distinguishes itself from sibling tools by mentioning the toggle tool vmware_host_firewall_ruleset.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates usage for reading firewall rulesets and default policy, and hints at toggling via a sibling tool, but does not explicitly specify when to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vmware_host_healthARead-only
Hardware health sensors of a host (equivalent of esxcli hardware): overall CPU/memory/storage state and alerting sensors.
Returns a structured object {host, sensor_count, summary:{green, yellow, red, unknown}, sensors:[{name, state, reading}]} — by default only non-green sensors are listed.
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | Name of the ESXi host | |
| all_sensors | No | List all sensors (default: only abnormal ones) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, destructiveHint=false, idempotentHint=false. The description adds valuable behavioral details: it returns a structured object, by default only non-green sensors are listed, and details the summary with color counts. No contradictions; the description supplements annotations effectively.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two crisp sentences: first states purpose and equivalence, second details the return format. No fluff, essential information front-loaded. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given two parameters, existence of output schema, and low complexity, the description is complete. It explains the return structure thoroughly and notes the default filtering. The presence of a separate output schema reduces burden; description aligns well.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters. The description adds meaning by explaining the default behavior ('by default only non-green sensors are listed') and the return structure, which clarifies the purpose of 'all_sensors' without repeating schema. It adds context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it reports hardware health sensors of a host, equivalent to esxcli hardware. It provides a specific verb and resource (health sensors) and distinguishes from sibling tools like vmware_get_host (general host info) and other vmware_host_* tools by focusing solely on health sensors.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions 'equivalent of esxcli hardware', providing context for when to use. However, it does not explicitly state when not to use or compare to alternatives like vmware_host_advanced_settings or vmware_get_host. The sibling tools are not directly conflicting, so implicit guidance is sufficient but lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vmware_host_network_configARead-onlyIdempotent
Network configuration of a host (equivalent of esxcli network): vSwitches, portgroups, vmkernel interfaces, physical NICs.
Returns a structured object {host, vswitches:[...], portgroups:[...], vmkernel_nics:[...], physical_nics:[...]}.
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | Name of the ESXi host |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the description's job is to add context. It does so by detailing the return structure, though it does not cover auth needs or rate limits. The description adds value without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two efficient sentences: first defines scope, second details return structure. No wasted words, and it's front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one parameter, full schema coverage, clear annotations, and an output schema, the description sufficiently covers the tool's purpose and output. No additional context is needed for a read-only network config retrieval tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter 'host', and the description does not add further semantic detail beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it retrieves network configuration of a host, analogous to esxcli network, and enumerates components (vSwitches, portgroups, vmkernel interfaces, physical NICs). This distinguishes it from sibling tools like vmware_list_networks or vmware_get_host.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives. While the scope is clear from the description, it does not provide when-not or alternatives, which is a gap for an agent deciding between multiple host-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vmware_host_servicesARead-onlyIdempotent
Lists the services of an ESXi host (equivalent of esxcli system service list).
In json: {host, count, services:[{key, label, running, policy, required}]}. Act on them with vmware_host_service_action (host.config).
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | Name of the ESXi host | |
| response_format | No | markdown (default, compact table) or json (full structure) | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, destructiveHint, idempotentHint, openWorldHint. Description adds output structure and CLI equivalence, which is useful context beyond annotations. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words. Purpose, output format, and pointer to action tool all included efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, so return values are covered. Description adds the JSON structure and mentions the action tool. Complete for a read-only listing tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline 3. Description does not add new parameter semantics beyond what the schema provides. It shows output structure but that's not parameter-specific.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it lists services of an ESXi host and gives CLI equivalent. Specific verb+resource. Does not explicitly differentiate from sibling tools, but the purpose is clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Mentions that actions can be performed with a sibling tool, but does not provide explicit when-to-use or when-not-to-use guidance relative to other host listing tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vmware_host_storageARead-onlyIdempotent
Storage of a host (equivalent of esxcli storage): HBA adapters and paginated LUNs with multipath paths.
In json: {host, adapters:[...], total, count, offset, has_more, next_offset, luns:[{canonical_name, model, type, capacity, operational_state, paths}]}. Rescan with vmware_host_rescan_storage (host.config).
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | Name of the ESXi host | |
| limit | No | Maximum number of LUNs | |
| offset | No | Pagination offset for LUNs | |
| response_format | No | markdown (default, compact table) or json (full structure) | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly and idempotent behavior. The description adds value by detailing the returned data structure (HBA adapters, paginated LUNs, fields like capacity and paths), providing context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is reasonably concise, with two clear sections: purpose and data structure. It avoids unnecessary details but could be better formatted with bullet points or clearer separation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's purpose and output structure, compensating for the presence of an output schema. It is sufficient for a read-only listing tool, though it slightly lacks explanation of HBA adapter details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so description provides minimal added value for parameters. It mentions pagination indirectly via the JSON structure but does not elaborate on limit or offset beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves storage information for a host, including HBA adapters and paginated LUNs with multipath paths, distinguishing it from other host-related tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a hint about an alternative tool (vmware_host_rescan_storage) for a different action, but lacks explicit guidance on when to use this tool versus siblings like vmware_list_hosts or vmware_host_health.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vmware_host_vibsARead-onlyIdempotent
Software packages (VIBs) installed on a host (equivalent of esxcli software vib list) and image profile.
In json: {host, image_profile, total, count, offset, has_more, next_offset, vibs:[{name, version, vendor, acceptance_level}]}. In markdown: table.
| Name | Required | Description | Default |
|---|---|---|---|
| host | Yes | Name of the ESXi host | |
| limit | No | Maximum number of results | |
| offset | No | Pagination offset | |
| name_filter | No | Substring to search for in the VIB name | |
| response_format | No | markdown (default, compact table) or json (full structure) | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint. Description adds details about pagination, output formats (JSON/markdown), and the structure of results, providing useful context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is two sentences plus a JSON example. It is front-loaded with purpose and format. The JSON structure is lengthy but informative; overall efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 parameters with filters and pagination, the description details output fields and format. No formal output schema but the provided JSON structure compensates. Adequate for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all 5 parameters with descriptions. The description adds minimal extra value by outlining the response structure but does not enhance parameter understanding beyond the schema's detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool lists VIBs and image profile on a host, with a specific verb 'list' and resource 'VIBs'. It distinguishes from sibling tools like vmware_host_health by focusing on software packages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. It mentions equivalence to 'esxcli software vib list' but does not compare with other host tools in the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vmware_list_affinity_rulesARead-onlyIdempotent
Lists the affinity / anti-affinity / VM-host rules of a cluster.
Returns a JSON {cluster, count, rules:[{key, name, type, enabled, vms}]}.
| Name | Required | Description | Default |
|---|---|---|---|
| cluster | Yes | Cluster name |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. Description adds return format (JSON structure with cluster, count, rules) and explains rule structure, providing valuable behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences: first states purpose, second provides return format. No unnecessary words; efficient and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Single required parameter, output schema exists, description details return format. Sufficient for an agent to understand and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema describes 'cluster' parameter with description 'Cluster name'. Description does not add extra meaning or format details. With 100% schema coverage, baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses specific verb 'Lists' and specifies resource 'affinity / anti-affinity / VM-host rules of a cluster'. Clearly distinguishes from sibling list tools that return different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives. Usage is implied by the purpose, but no when-not or alternative comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vmware_list_clustersARead-onlyIdempotent
Lists the clusters: HA/DRS, hosts, aggregated CPU/RAM capacity.
In json: {count, clusters:[{name, moid, hosts, ha_enabled, drs_enabled, drs_behavior, total_cpu_mhz, total_memory, effective_hosts}]}. In markdown: table.
| Name | Required | Description | Default |
|---|---|---|---|
| response_format | No | markdown (default, compact table) or json (full structure) | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false. The description adds behavioral context: 'aggregated CPU/RAM capacity' and details on output structure (JSON fields and markdown table). No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: two sentences front-loaded with purpose, followed by output format details. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one optional parameter, the description covers the output structure comprehensively. Even without an explicit output schema shown, the description provides the JSON structure and markdown table detail, making it complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds examples of output content but does not significantly extend parameter semantics beyond the schema's description of 'response_format'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Lists the clusters: HA/DRS, hosts, aggregated CPU/RAM capacity', specifying the resource and scope. It distinguishes from sibling list tools (e.g., vmware_list_hosts, vmware_list_datastores) by focusing on clusters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not explicitly advise when to use this tool versus alternatives like vmware_get_cluster_config or vmware_drs_recommendations. Usage context is implied by listing clusters, but no explicit guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vmware_list_datastoresBRead-onlyIdempotent
Lists the datastores: type, capacity, free space, accessibility.
In json: {total, count, ..., datastores:[{name, moid, type, capacity, free, free_pct, accessible, hosts, vms}]}. In markdown: table.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results | |
| offset | No | Pagination offset | |
| response_format | No | markdown (default, compact table) or json (full structure) | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is clear. The description adds output format details (json/markdown structure) but does not disclose other behaviors like pagination limits or response size.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short (two sentences) and front-loaded. The second sentence is slightly messy with ellipsis but overall efficient. Could be cleaner but effective.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with high schema coverage, annotations, and output structure hints, the description provides adequate context. It clarifies output format and field details, though it does not mention prerequisite connections or scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for all three parameters. The description does not add significant meaning beyond the schema; it reiterates output structure but provides no new parameter-level semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that it lists datastores with fields like type, capacity, free space, and accessibility. However, it does not differentiate from sibling listing tools (e.g., list_hosts, list_vms), leaving ambiguity for an AI agent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as vmware_list_hosts or vmware_get_cluster_config. The description only explains what the tool does without any when-to-use or when-not-to-use advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vmware_list_eventsARead-only
Recent vCenter events, global or filtered on a VM.
In json: {total, count, offset, has_more, next_offset, events:[{time, type, user, target, message}]}, most recent first. In markdown: table.
| Name | Required | Description | Default |
|---|---|---|---|
| vm | No | Limit to events for this VM (name or MoID) | |
| limit | No | Maximum number of events | |
| offset | No | Pagination offset | |
| response_format | No | markdown (default, compact table) or json (full structure) | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false. The description adds that results are most recent first, includes pagination fields (has_more, next_offset), and specifies output formats. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences that front-load the purpose and then provide the output structure. No extraneous information; every sentence is essential.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is a simple list with filtering and pagination, and schema covers all parameters, the description provides necessary details like output format and ordering. It lacks only minor behavioral details like rate limits, but remains sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all 4 parameters. The description adds meaning by clarifying the vm parameter supports name or MoID, and specifying that response_format controls table vs full structure. This adds value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists recent vCenter events, either globally or filtered by a VM. It distinguishes from sibling tools like vmware_recent_tasks and vmware_list_vms by focusing on events.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (global or filtered) but does not explicitly state when to use this tool versus alternatives, nor provides exclusions. Pagination details are given but not when-not-to-use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vmware_list_hostsARead-onlyIdempotent
Lists the ESXi hosts: state, version, model, CPU/RAM load, VM count.
In json: {total, count, ..., hosts:[{name, moid, connection_state, power_state, in_maintenance, version, model, cpu_cores, cpu_usage_mhz, cpu_total_mhz, memory_total, memory_usage, vms}]}. In markdown: table.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results | |
| offset | No | Pagination offset | |
| response_format | No | markdown (default, compact table) or json (full structure) | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds valuable behavioral context by specifying the output structure (JSON and markdown formats) and the fields included, such as host metadata and usage metrics. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the main purpose and a bullet-like list of fields. It is reasonably concise, though the inline representation of JSON and markdown could be a bit more streamlined. It still effectively communicates the essential information without excess.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the tool has a read-only, idempotent nature with annotations and an output schema, the description provides sufficient completeness. It covers what data is returned, the output formats, and hints at pagination through the parameters. No missing critical information for an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all three parameters (limit, offset, response_format). The description adds minimal extra meaning beyond restating the response_format options, which are already described in the schema. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Lists the ESXi hosts' and specifies the included fields (state, version, model, CPU/RAM load, VM count). It distinguishes itself from sibling tools like vmware_get_host (single host) and vmware_list_vms (virtual machines) by its scope and output details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives. While the context of listing all hosts is implied, there is no mention of prerequisites, limitations, or when not to use it (e.g., for a single host, use vmware_get_host instead).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vmware_list_networksARead-onlyIdempotent
Lists the networks (standard and distributed portgroups).
In json: {total, count, ..., networks:[{name, moid, type, accessible, vms, vlan}]}. vlan is only filled in for distributed portgroups. In markdown: table.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results | |
| offset | No | Pagination offset | |
| response_format | No | markdown (default, compact table) or json (full structure) | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is covered. The description adds valuable behavioral context: it describes the output structure in JSON (fields like name, moid, type, accessible, vms, vlan) and notes that 'vlan' is only filled for distributed portgroups. It also explains the difference between JSON and markdown output formats. This goes beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise—two sentences plus a brief sample structure—while conveying the core purpose and key behavioral details. Every sentence earns its place; no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists, the description need not detail return values, but it does provide a helpful output skeleton. It covers the main purpose, output format options, and a conditional field (vlan). Minor gap: it does not mention pagination behavior, but the schema covers limit/offset. Overall complete for a list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (all three parameters are documented in the schema). The description does not add any additional meaning or context for the parameters beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists networks, specifically standard and distributed portgroups. It uses a specific verb ('Lists') and resource ('networks'), and distinguishes itself from sibling list tools like vmware_list_hosts or vmware_list_vms by being network-focused.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (you use it to get network listings) but does not provide explicit guidance on when to use it versus alternatives, nor does it mention any conditions or exclusions. No sibling comparisons are offered.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vmware_list_snapshotsARead-onlyIdempotent
Snapshot tree of a VM (name, description, date, children).
Returns a structured object {vm, count, current_snapshot_moid, snapshots:[...tree...]}.
| Name | Required | Description | Default |
|---|---|---|---|
| vm | Yes | Exact name or MoID of the VM |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint, idempotentHint, and destructiveHint=false. The description adds context about the return format (tree structure) but does not disclose additional behavioral traits such as pagination, auth requirements, or hidden side effects. It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two short, front-loaded sentences. Every sentence adds value: first states purpose and included fields, second specifies return structure. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, return structure explained, presence of output schema), the description is complete enough for an agent to use. It covers the output format and required input. Minor gap: no mention of error conditions or behavior when VM not found.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents the 'vm' parameter. The description does not add any extra semantic meaning beyond what the schema provides. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states it returns a snapshot tree of a VM, including fields (name, description, date, children) and the overall return structure. This clearly distinguishes it from sibling list tools that focus on different VMware resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving snapshot information, but it does not provide guidance on when to use this tool versus alternatives (e.g., other list tools) or any prerequisites. No exclusions or when-not-to-use scenarios are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vmware_list_vmsARead-onlyIdempotent
Lists the vCenter VMs with filters and pagination.
In json: {total, count, offset, has_more, next_offset, vms:[{name, moid, power_state, guest_os, ip, hostname, cpu, memory_mb, host, vmware_tools}]}. In markdown: table.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results | |
| offset | No | Pagination offset | |
| name_filter | No | Substring to search for in the name (case-insensitive) | |
| power_state | No | State filter: poweredOn, poweredOff or suspended | |
| response_format | No | markdown (default, compact table) or json (full structure) | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive. The description adds details about pagination (has_more, next_offset) and output formats, exceeding baseline annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: two sentences. First sentence states purpose, second explains output structure in both formats. No redundancy, front-loaded with key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and rich annotations/schema, the description covers purpose, output structure, and key features (filters, pagination). Lacks usage context but otherwise adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are well-documented. The description mentions filters and pagination but doesn't add new semantic meaning beyond the schema, meeting baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists VMs with filters and pagination, which is specific. It distinguishes from sibling tools like vmware_get_vm (single VM) implicitly but not explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as vmware_get_vm or vmware_list_hosts. The description lacks any context about selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vmware_recent_tasksARead-only
Latest vCenter tasks (running or recent operations) with state and target.
In json: {count, tasks:[{key, description, target, state, progress_pct, user, queued, started, completed, error}]}. In markdown: table, most recent first.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of tasks | |
| response_format | No | markdown (default, compact table) or json (full structure) | markdown |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, establishing safe, non-destructive behavior. The description adds value by detailing the output structure (JSON fields and markdown table) and ordering (most recent first), which aids agent understanding beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, with two sentences that front-load the purpose and then specify output details. Every sentence adds value, and there is no redundancy or waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with two parameters and good annotations, the description is fully complete. It explains the output structure for both JSON and markdown formats, and the ordering. No additional information is needed for an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with clear descriptions for both 'limit' and 'response_format'. The description adds minimal extra semantics; it mentions output formats but schema already defines them with enums. Thus, per guidelines, baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves 'Latest vCenter tasks' with state and target, which is specific and informative. However, it does not explicitly differentiate from sibling tools like 'vmware_list_events' which might also list recent operations, though tasks are distinct.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for viewing recent tasks but offers no guidance on when to use this tool versus alternatives like 'vmware_list_events' or other monitoring tools. No explicit context or exclusions provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
20 tool updates
v0.1.0- First observed
vmware_drs_recommendations - First observed
vmware_get_cluster_config - First observed
vmware_get_host - First observed
vmware_get_vm - First observed
vmware_host_advanced_settings - First observed
vmware_host_firewall - First observed
vmware_host_health - First observed
vmware_host_network_config - First observed
vmware_host_services - First observed
vmware_host_storage - First observed
vmware_host_vibs - First observed
vmware_list_affinity_rules - First observed
vmware_list_clusters - First observed
vmware_list_datastores - First observed
vmware_list_events - First observed
vmware_list_hosts - First observed
vmware_list_networks - First observed
vmware_list_snapshots - First observed
vmware_list_vms - First observed
vmware_recent_tasks
TDQS
Each tool targets a distinct VMware resource or configuration aspect (clusters, hosts, VMs, storage, networking, etc.) with no overlapping purposes. The descriptions clearly differentiate their scopes.
All tools use the 'vmware_' prefix, but verb usage is mixed: some use 'list_', some 'get_', and some are noun phrases (e.g., 'host_advanced_settings'). While readable and predictable, the pattern is not perfectly uniform.
20 tools is well-scoped for a VMware management server, covering major resource types (clusters, hosts, VMs, datastores, networks, events, tasks) without being excessive.
The tool set is heavily read-only; there are no write/modify tools (create, update, delete) for any resource. Several descriptions reference missing action tools (e.g., apply DRS recommendation, toggle firewall ruleset, modify advanced settings), indicating significant gaps for operational use.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
The MCP server that vets MCP servers: identity, risk grade and per-tool risk before you install.
Governed MCP gateway: one endpoint for your tools, with credential custody and audit log.
Scan any MCP server for tool-poisoning, security, auth & license. Trust score before install.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceMCP server for VMware vSphere/vCenter operations, enabling natural language control of VMs, hosts, and infrastructure.Apache 2.0
- FlicenseNot gradedqualityCmaintenanceA comprehensive MCP server for VMware vSphere management, enabling AI agents to perform VM operations, monitoring, snapshots, and reporting through a secure, Dockerized environment.21-
- AlicenseAqualityCmaintenanceMCP server for VMware vSphere infrastructure management, enabling VM operations, monitoring, and network discovery.171MIT
- AlicenseNot gradedqualityBmaintenanceMCP server that provides AI agents with comprehensive access to VMware vSphere operations, including VM management, monitoring, and vSAN read-only monitoring, through a secure Docker environment.Apache 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/Hokonoken/mcp-vmware'
If you have feedback or need assistance with the MCP directory API, please join our Discord server