Provides secure access to VMware vCenter 8.0+ operations, including VM lifecycle management (power operations, resource modification, deletion), snapshot operations (create, list, delete), and inventory discovery (hosts, datastores, networks, datacenters, resource utilization). Features RBAC authorization, audit logging, and rate limiting for multi-tenant environments.
vSphere-MCP-Pro
A secure, feature-rich Machine Control Plane (MCP) server for VMware vCenter 8.0+.
This service exposes a controlled set of vCenter operations via MCP tools, including VM lifecycle management, snapshot operations, datastore/host discovery, and more—wrapped with audit logging, RBAC authorization, and rate limiting.
Table of Contents
Overview
vsphere-mcp-pro is an MCP server designed for VMware vCenter 8.0+ environments.
It provides:
Safe, structured access to vCenter operations
Strict authorization via roles → allowed tools
Snapshot + VM lifecycle operations
Auditing and rate limiting for secure multi-tenant use
Support for both
/api(preferred) and/restvCenter endpointsOptional host allow-listing to prevent accidental cross-cluster operations
The server runs using FastMCP and automatically wraps every tool operation with:
Token-based RBAC (
Authorizer)Token bucket rate limiting
JSONL audit logging
Optional confirmation for destructive operations
Key Features
✔ Secure by design
SSL verification enabled by default
Optional CA bundle support
Allowed-host enforcement prevents unauthorized vCenter targets
✔ Strong authorization model
Token → role mapping
Role → allowed-tools mapping
Enforced unless explicitly disabled
Destructive operations require
confirm=True
✔ Operationally robust
Automatic retry logic for vCenter API calls (
Retry + HTTPAdapter)Session auto-renewal on 401
Extensive logging for auditing and observability
✔ High performance
Thread-safe vCenter session management
MCP server built with
uvicorn
Architecture
Key modules:
server.py
Builds the MCP server, registers all tools, injects authorization, rate-limiting, and auditing wrappers.vsphere_client.py
Handles retries, authentication, and REST/API mode switching for VMware vCenter.authz.py
Implements:Token → role resolution
Role → tool gating
Token bucket rate limiting
audit.py
Writes JSON-lines logs for every operation.config.py
Loads environment variables into a typedAppConfigusingpydantic.
Directory Structure
Installation
Prerequisites
Python 3.10+
VMware vCenter 8.0+
A valid set of API credentials
Install from source
Configuration
Configuration is environment-driven. Copy the example file:
Required Environment Variables
Variable | Description |
| vCenter hostname/IP |
| vCenter username |
| vCenter password |
| JSON map of role → allowed tools |
| JSON map of token → role |
| Optional allowlist for multi-host deployments |
Example snippet:
Running the Server
Local execution
Server defaults (override via env vars):
Host:
0.0.0.0Port:
8000MCP path:
/mcp
Available Tools / API
Below is a categorized summary of available MCP tools exposed by the server.
VM Discovery
list_vmsget_vm_details
Inventory Discovery
list_hostslist_datastoreslist_networkslist_datacentersget_datastore_usageget_resource_utilization_summary
Power Operations
power_on_vmpower_off_vmrestart_vm
Snapshot Operations
list_vm_snapshotscreate_vm_snapshotdelete_vm_snapshot
VM Resource Management
modify_vm_resources(CPU / memory)
Destructive Operations (require confirm=True)
delete_vmdelete_vm_snapshot
Audit Logging
Every MCP tool call is logged as a JSON line containing:
tool name
execution status
duration (ms)
sanitized arguments (passwords & tokens masked)
optional error message
role + host context
Logs either write to stdout or to the configured AUDIT_LOG_PATH.
Rate Limiting
Uses a token-bucket strategy:
Configurable
RATE_LIMIT_RPSandRATE_LIMIT_BURSTSeparate buckets per token
Disabled by setting
RATE_LIMIT=false
Security Model
Mechanism | Purpose |
SSL verification | Prevent MITM attacks |
Allowed-host list | Prevent unauthorized target selection |
Role → tool mapping | Enforce least-privilege principle |
Token authentication | Multi-tenant safe access |
Required confirmations | Prevent accidental destructive operations |
Rate limiting | Protects vCenter and MCP server |
Development
Install dev deps
Run with autoreload
Docker Usage
Build
Run
Troubleshooting
"login failed: HTTP 401"
Verify vCenter username/password
Ensure correct API mode (
VSPHERE_API_MODE=api|rest)
"Hostname not in allowed set"
Add the hostname to
ALLOWED_VCENTER_HOSTS
Rate limit errors
Increase
RATE_LIMIT_BURSTAdjust per-token usage
SSL certificate issues
Set
VCENTER_CA_BUNDLEorDisable SSL verification only if absolutely necessary:
INSECURE=true
License
This project is licensed under your chosen repository license.