Professional Model Context Protocol (MCP) server for VMware ESXi hypervisor management
Project description
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
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 details
Configuration
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: 3600
Usage
# 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_mcp
MCP 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.py
Testing
# 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/sdk
Authentication 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
- VMware vSphere API Documentation
- Model Context Protocol Specification
- VMware ESXi Security Guide
- Python VMware Libraries
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!
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file iflow_mcp_uldyssian_sh_vmware_esxi_mcp-1.5.0.tar.gz.
File metadata
- Download URL: iflow_mcp_uldyssian_sh_vmware_esxi_mcp-1.5.0.tar.gz
- Upload date:
- Size: 22.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b39ae3a5091c7b064ceb1fd854de92249dde7349b89b55151e4f2547a717255e
|
|
| MD5 |
521cdf75b970ed13a01bfee9b2f70a62
|
|
| BLAKE2b-256 |
36b9f4ac4aa16744c1589526c604f89fc00936dcd9dd24ae9259b501d1aa3990
|
File details
Details for the file iflow_mcp_uldyssian_sh_vmware_esxi_mcp-1.5.0-py3-none-any.whl.
File metadata
- Download URL: iflow_mcp_uldyssian_sh_vmware_esxi_mcp-1.5.0-py3-none-any.whl
- Upload date:
- Size: 23.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
72836695dc2085a24024288952ec69f63a760afb9a316c8edd7c2e37af84dd96
|
|
| MD5 |
219e7a97fb512487d89f6785bd5a5de7
|
|
| BLAKE2b-256 |
07e5a1ed8486e7960f0daecdad25d2ac6b17ed97800d90bfde764d7fc72118e4
|