Skip to main content

Professional Model Context Protocol (MCP) server for VMware ESXi hypervisor management

Project description

VMware ESXi MCP Server

License: MIT Python 3.8+ MCP Compatible Security Scan

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

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. 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

Support

For support and questions:


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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

iflow_mcp_uldyssian_sh_vmware_esxi_mcp-1.5.1.tar.gz (22.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file iflow_mcp_uldyssian_sh_vmware_esxi_mcp-1.5.1.tar.gz.

File metadata

  • Download URL: iflow_mcp_uldyssian_sh_vmware_esxi_mcp-1.5.1.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

Hashes for iflow_mcp_uldyssian_sh_vmware_esxi_mcp-1.5.1.tar.gz
Algorithm Hash digest
SHA256 1d961c7f6d18f8eaa971a25acdf634dd232aebd35a6115767a83b8e80e971382
MD5 10cced07def5289e4aabdb58cf03c24d
BLAKE2b-256 70ef192790004494262fc0627523c3486b4b798a0a044929c690a23f745a4bac

See more details on using hashes here.

File details

Details for the file iflow_mcp_uldyssian_sh_vmware_esxi_mcp-1.5.1-py3-none-any.whl.

File metadata

  • Download URL: iflow_mcp_uldyssian_sh_vmware_esxi_mcp-1.5.1-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

Hashes for iflow_mcp_uldyssian_sh_vmware_esxi_mcp-1.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2876bce8695f3287e25e70f99eaf72bb8b3032653d27331ef1c1916acd63122e
MD5 34baa597cf0caf581b3fbcb19231f20d
BLAKE2b-256 ac4008dbd24649f067e1bf8f88fbfcbfe4706338446768fafa182d85614dccb3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page