vmware-esxi-mcp
Provides Prometheus metrics and health checks for monitoring the ESXi environment.
Manages VMware ESXi hypervisor, including host operations, virtual machine lifecycle, resource monitoring, and security management.
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., "@vmware-esxi-mcplist all virtual machines on the ESXi host"
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.
VMware ESXi MCP Server
A professional Model Context Protocol (MCP) server implementation for VMware ESXi hypervisor management. This enterprise-ready solution provides secure, standardized interfaces for ESXi host operations, virtual machine lifecycle management, and infrastructure monitoring.
Features
Core ESXi Management
Host Operations: Power management, maintenance mode, configuration
Virtual Machine Lifecycle: Create, clone, migrate, snapshot management
Resource Monitoring: CPU, memory, storage, network utilization
Security Management: User permissions, SSL certificates, firewall rules
Storage Operations: Datastore management, VMFS operations, NFS/iSCSI configuration
MCP Integration
Standardized Protocol: Full MCP specification compliance
Tool Discovery: Dynamic capability advertisement
Resource Management: Efficient connection pooling and caching
Error Handling: Comprehensive error reporting and recovery
Authentication: Secure credential management with token refresh
Enterprise Features
High Availability: Connection failover and retry mechanisms
Audit Logging: Comprehensive operation tracking
Role-Based Access: Granular permission controls
Performance Optimization: Bulk operations and async processing
Exception Management: Comprehensive error handling with custom exception classes
Monitoring Integration: Prometheus metrics and health checks
Related MCP server: vSphere-MCP-Pro
Quick Start
Prerequisites
Python 3.8 or higher
VMware ESXi 6.7 or later
Network connectivity to ESXi host
Valid ESXi credentials with appropriate permissions
Installation
# Clone the repository
git clone https://github.com/uldyssian-sh/vmware-esxi-mcp.git
cd vmware-esxi-mcp
# Install dependencies
pip install -r requirements.txt
# Configure environment
cp config.example.yaml config.yaml
# Edit config.yaml with your ESXi detailsConfiguration
Create config.yaml:
esxi:
host: "esxi-host.example.com"
username: "root"
password: "${ESXI_PASSWORD}"
port: 443
ssl_verify: true
timeout: 30
mcp:
server_name: "vmware-esxi-mcp"
version: "1.5.0"
capabilities:
- "vm_management"
- "host_operations"
- "resource_monitoring"
logging:
level: "INFO"
file: "esxi-mcp.log"
max_size: "10MB"
backup_count: 5
security:
api_key: "${MCP_API_KEY}"
rate_limit: 100
session_timeout: 3600Usage
# Start the MCP server
python -m vmware_esxi_mcp --config config.yaml
# Or use environment variables
export ESXI_HOST="esxi-host.example.com"
export ESXI_USERNAME="root"
export ESXI_PASSWORD="your-password"
export MCP_API_KEY="your-api-key"
python -m vmware_esxi_mcpMCP Tools
Virtual Machine Management
create_vm
Create a new virtual machine with specified configuration.
{
"name": "create_vm",
"description": "Create a new virtual machine",
"inputSchema": {
"type": "object",
"properties": {
"vm_name": {"type": "string"},
"cpu_count": {"type": "integer", "minimum": 1},
"memory_mb": {"type": "integer", "minimum": 512},
"disk_size_gb": {"type": "integer", "minimum": 1},
"network": {"type": "string"},
"guest_os": {"type": "string"}
},
"required": ["vm_name", "cpu_count", "memory_mb", "disk_size_gb"]
}
}power_vm
Control virtual machine power state.
{
"name": "power_vm",
"description": "Control VM power state",
"inputSchema": {
"type": "object",
"properties": {
"vm_name": {"type": "string"},
"action": {"type": "string", "enum": ["on", "off", "reset", "suspend"]}
},
"required": ["vm_name", "action"]
}
}Host Management
get_host_info
Retrieve comprehensive ESXi host information.
{
"name": "get_host_info",
"description": "Get ESXi host system information",
"inputSchema": {
"type": "object",
"properties": {
"include_hardware": {"type": "boolean", "default": true},
"include_network": {"type": "boolean", "default": true},
"include_storage": {"type": "boolean", "default": true}
}
}
}maintenance_mode
Manage host maintenance mode operations.
{
"name": "maintenance_mode",
"description": "Enter or exit maintenance mode",
"inputSchema": {
"type": "object",
"properties": {
"action": {"type": "string", "enum": ["enter", "exit"]},
"evacuate_vms": {"type": "boolean", "default": true},
"timeout": {"type": "integer", "default": 300}
},
"required": ["action"]
}
}Architecture
Component Overview
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ MCP Client │────│ ESXi MCP │────│ VMware ESXi │
│ Application │ │ Server │ │ Host │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│
┌─────────────────┐
│ Configuration │
│ & Logging │
└─────────────────┘Security Architecture
Authentication: Multi-factor authentication support
Authorization: Role-based access control (RBAC)
Encryption: TLS 1.3 for all communications
Audit Trail: Comprehensive logging of all operations
Input Validation: Strict parameter validation and sanitization
Development
Project Structure
vmware-esxi-mcp/
├── src/
│ ├── vmware_esxi_mcp/
│ │ ├── __init__.py
│ │ ├── server.py
│ │ ├── tools/
│ │ ├── auth/
│ │ └── utils/
├── tests/
├── docs/
├── examples/
├── requirements.txt
└── setup.pyTesting
# Run unit tests
python -m pytest tests/
# Run integration tests
python -m pytest tests/integration/ --esxi-host=test-host
# Run security tests
python -m pytest tests/security/Contributing
Fork the repository
Create a feature branch (
git checkout -b feature/amazing-feature)Commit your changes (
git commit -m 'Add amazing feature')Push to the branch (
git push origin feature/amazing-feature)Open a Pull Request
Security Considerations
Production Deployment
Use strong, unique passwords for ESXi accounts
Enable certificate verification in production
Implement proper network segmentation
Regular security updates and patches
Monitor and audit all operations
Best Practices
Rotate credentials regularly
Use least-privilege access principles
Enable comprehensive logging
Implement proper backup strategies
Test disaster recovery procedures
Troubleshooting
Common Issues
Connection Timeout
# Check network connectivity
ping esxi-host.example.com
# Verify ESXi SSH/API access
curl -k https://esxi-host.example.com/sdkAuthentication Failures
Verify credentials in configuration
Check ESXi user permissions
Ensure account is not locked
SSL Certificate Issues
Update ESXi SSL certificates
Configure proper certificate validation
Check certificate expiration dates
Performance Tuning
Optimization Guidelines
Use connection pooling for multiple operations
Implement proper caching strategies
Optimize batch operations
Monitor resource utilization
Configure appropriate timeouts
Monitoring Metrics
API response times
Connection pool utilization
Error rates and types
Resource consumption
Operation success rates
License
This project is licensed under the MIT License - see the LICENSE file for details.
Contributors
uldyssian-sh LT - Initial work and maintenance
dependabot[bot] - Dependency updates
actions-user - Automated workflows
References
Support
For support and questions:
Create an issue in this repository
Check the documentation
Review troubleshooting guide
Maintained by: uldyssian-sh
Disclaimer: Use of this code is at your own risk. Author bears no responsibility for any damages caused by the code.
⭐ Star this repository if you find it helpful!
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
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/uldyssian-sh/vmware-esxi-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server