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.0.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.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

Hashes for iflow_mcp_uldyssian_sh_vmware_esxi_mcp-1.5.0.tar.gz
Algorithm Hash digest
SHA256 b39ae3a5091c7b064ceb1fd854de92249dde7349b89b55151e4f2547a717255e
MD5 521cdf75b970ed13a01bfee9b2f70a62
BLAKE2b-256 36b9f4ac4aa16744c1589526c604f89fc00936dcd9dd24ae9259b501d1aa3990

See more details on using hashes here.

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

Hashes for iflow_mcp_uldyssian_sh_vmware_esxi_mcp-1.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 72836695dc2085a24024288952ec69f63a760afb9a316c8edd7c2e37af84dd96
MD5 219e7a97fb512487d89f6785bd5a5de7
BLAKE2b-256 07e5a1ed8486e7960f0daecdad25d2ac6b17ed97800d90bfde764d7fc72118e4

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