list_vmsLABSCO SUMMARY
The questions you would otherwise click through vCenter for.
Inventory, utilisation and power control sit behind one connection, so "which VMs are eating the cluster" is a single question rather than a tour of the performance tabs. Anything that changes state asks for confirmation first.
What it is
A Dockerised server over the vCenter REST API. It reads the inventory — datacenters, hosts, datastores, networks, VMs and their snapshots — reports resource use at both VM and host level, and performs power operations. Destructive operations require explicit confirmation.
What you get
- Every VM with its power state, and full detail for any one of them
- Datacenters, hosts, datastores and networks listed
- CPU, memory and network utilisation per VM, and performance figures per host
- Disk usage per VM and capacity per datastore
- The VMs currently running hot, without going VM by VM
- Snapshots listed for a VM
- Power on, power off and restart, behind a confirmation step
Requirements
vCenter Server with REST API access, and its hostname, a username and a password supplied in the environment. Runs under Docker Compose and serves Streamable HTTP on the port you map. Set INSECURE if your vCenter uses a self-signed certificate.
Setup effort
Build from source — git clone https://github.com/giuliolibrando/vmware-vsphere-mcp-server.git
USE CASES
Getting your bearings in an estate you inherited
List datacenters, then hosts and datastores, before touching a single VM.
Finding what is eating the cluster
Ask for the VMs with high resource usage, then read the detail on the offender rather than paging through every guest.
Chasing a datastore that is filling up
Read datastore capacity, then the per-VM disk usage sitting on it.
Deciding whether a host is the problem
Pull the host's performance figures and compare them against the VMs it carries.
Bouncing a VM that has hung
Confirm what it is, check for a snapshot to fall back to, then restart or power-cycle it.
Freeing capacity out of hours
Power off the guests you agreed to stop and bring them back in the morning, each behind its confirmation.
28 tools
Listed in project docs. Your client may show a different list.
get_vm_detailspower_on_vmpower_off_vmrestart_vmlist_hostslist_datastoreslist_networkslist_datacentersget_vm_performance_infoget_host_performance_infoget_vm_disk_usageget_datastore_usageget_vms_with_high_resource_usagelist_vm_snapshotscreate_vm_snapshotdelete_vm_snapshotlist_templatesget_vm_eventsget_alarmsget_port_groupsgenerate_vm_reportget_resource_utilization_summarybulk_power_operationsbulk_delete_vmsdelete_vmmodify_vm_resourcesforce_power_off_vmBEFORE YOU INSTALL
What to know first
Tools you get
28 tools named in the project's documentation.
Requires
- VCENTER_HOST in your environment
- VCENTER_USER in your environment
- VCENTER_PASSWORD in your environment
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
This one is built from source rather than installed with a single command.
Server setup
git clone https://github.com/giuliolibrando/vmware-vsphere-mcp-server.git
cd vmware-vsphere-mcp-server
cp env.example .envEdit .env with your vCenter credentials
The compose file attaches the container to an external Docker network named llm-rag-mcp_backend, and docker compose up stops if that network does not exist. Create it first if you don't have it:
docker network create llm-rag-mcp_backend
docker compose up -dMCP Clients
AnythingLLM
{
"mcpServers": {
"vsphere-mcp-server": {
"name": "vSphere MCP Server",
"type": "streamable",
"url": "http://vsphere-mcp-server:8000/mcp",
"auth_token": null,
"enabled": true
}
}
}http://vsphere-mcp-server:8000/mcp is the container's name on Docker's network, so it resolves only when AnythingLLM itself runs in Docker on the same network (the compose file joins llm-rag-mcp_backend). If AnythingLLM runs directly on your machine, use http://localhost:8000/mcp — the compose file publishes port 8000.