Track MCP LogoTrack MCP
Track MCP LogoTrack MCP

The world's largest repository of Model Context Protocol servers. Discover, explore, and submit MCP tools.

Product

  • Categories
  • Top MCP
  • New & Updated
  • Submit MCP

Company

  • About

Legal

  • Privacy Policy
  • Terms of Service
  • Cookie Policy

© 2026 TrackMCP. All rights reserved.

Built with ❤️ by Krishna Goyal

    Kvm Mcp

    An MCP server for KVM hypervisors

    7 stars
    Python
    Updated Oct 23, 2025
    kvm-hypervisor
    mcp-server

    Table of Contents

    • Why This Project?
    • Features
    • Performance Benefits
    • Connection Pooling
    • Caching
    • Asynchronous Processing
    • Monitoring and Diagnostics
    • Configuration
    • Performance Tuning
    • Connection Pool Configuration
    • Cache Configuration
    • Logging Configuration
    • Getting Started
    • Prerequisites
    • Installation
    • Usage
    • Example Commands
    • Create a New VM
    • Find VNC Ports
    • List VMs with Cache Bypass
    • Monitoring and Troubleshooting
    • Log Files
    • Performance Metrics
    • Common Issues and Solutions
    • Project Structure
    • Contributing
    • License

    Table of Contents

    • Why This Project?
    • Features
    • Performance Benefits
    • Connection Pooling
    • Caching
    • Asynchronous Processing
    • Monitoring and Diagnostics
    • Configuration
    • Performance Tuning
    • Connection Pool Configuration
    • Cache Configuration
    • Logging Configuration
    • Getting Started
    • Prerequisites
    • Installation
    • Usage
    • Example Commands
    • Create a New VM
    • Find VNC Ports
    • List VMs with Cache Bypass
    • Monitoring and Troubleshooting
    • Log Files
    • Performance Metrics
    • Common Issues and Solutions
    • Project Structure
    • Contributing
    • License

    Documentation

    KVM MCP Server

    A powerful JSON-RPC server for managing KVM virtual machines through a simple and intuitive interface. This server provides a centralized way to control and monitor your KVM virtual machines using a standardized protocol.

    Why This Project?

    Managing KVM virtual machines typically requires using multiple command-line tools like virsh, virt-install, and qemu-system. This project aims to:

    1. Simplify VM Management: Provide a single, unified interface for all VM operations

    2. Enable Remote Control: Allow remote management of VMs through JSON-RPC

    3. Automate VM Operations: Make it easy to script and automate VM management tasks

    4. Standardize VM Configuration: Ensure consistent VM setup across your infrastructure

    5. Optimize Performance: Implement efficient resource management and caching strategies

    Features

    • VM Lifecycle Management:
    • Create new VMs with customizable parameters
    • Start/stop/reboot VMs
    • List all available VMs with their status
    • Automatic state tracking and recovery
    • Network Management:
    • Configure VM networking using bridges
    • Support for the brforvms bridge
    • Automatic network interface configuration
    • IP address tracking and management
    • Storage Management:
    • Configurable VM disk storage location
    • Support for various disk formats (qcow2)
    • Configurable disk sizes
    • Automatic disk cleanup and management
    • Display Management:
    • VNC support for graphical access
    • Automatic VNC port assignment
    • Tools to find and connect to VM displays
    • Display state tracking and recovery
    • Installation Support:
    • Network installation from ISO images
    • Local installation from CDROM
    • Support for various OS variants
    • Automated installation configuration
    • Performance Optimizations:
    • Connection pooling for libvirt to reduce connection overhead
    • VM information caching for improved responsiveness
    • Asynchronous processing for better concurrency
    • Advanced logging for diagnostics and troubleshooting
    • Graceful shutdown handling for proper resource cleanup
    • Automatic connection recovery and validation
    • Rate limiting for API operations
    • Performance metrics collection

    Performance Benefits

    Connection Pooling

    • Reduced Latency: Eliminates the overhead of repeatedly opening and closing libvirt connections
    • Resource Efficiency: Maintains a pool of reusable connections, reducing system resource usage
    • Automatic Recovery: Detects and replaces dead connections automatically
    • Configurable Pool Size: Adjust the number of connections based on your workload

    Caching

    • Faster Response Times: Reduces repeated queries to libvirt for common operations
    • Configurable TTL: Set cache expiration based on your needs
    • Selective Bypass: Option to bypass cache for operations requiring fresh data
    • Automatic Invalidation: Cache is automatically invalidated when VM states change

    Asynchronous Processing

    • Improved Concurrency: Handle multiple requests simultaneously
    • Better Resource Utilization: Efficient use of system resources
    • Non-blocking Operations: Long-running operations don't block the server
    • Graceful Shutdown: Proper cleanup of resources during shutdown

    Monitoring and Diagnostics

    • Structured Logging: Easy-to-parse log format for analysis
    • Performance Metrics: Track operation timing and resource usage
    • Error Tracking: Detailed error logging for troubleshooting
    • Resource Monitoring: Track connection pool usage and cache effectiveness

    Configuration

    The server uses a JSON configuration file (config.json) to store default values and paths. This makes the server more portable and easier to customize. The configuration includes:

    json
    {
        "vm": {
            "disk_path": "/vm",                    // Base directory for VM disk storage
            "default_iso": "/iso/ubuntu-24.04.2-live-server-amd64.iso",  // Default installation media for Ubuntu-based VMs
            "default_master_image": "/iso/fedora-coreos-41-qemu.x86_64.qcow2",  // Default base image for Fedora CoreOS VMs
            "default_name": "newvmname",           // Default VM name
            "default_memory": 2048,                // Default memory allocation in MB
            "default_vcpus": 2,                    // Default number of virtual CPUs
            "default_disk_size": 20,               // Default disk size in GB
            "default_os_variant": "generic",       // Default OS variant for virt-install
            "default_network": "brforvms",         // Default network bridge for VM networking
            "ignition": {                          // Fedora CoreOS specific configuration
                "default_hostname": "coreos",      // Default hostname for CoreOS VMs
                "default_user": "core",            // Default user for CoreOS VMs
                "default_ssh_key": "~/.ssh/id_rsa.pub",  // Default SSH public key path
                "default_timezone": "UTC",         // Default timezone
                "default_locale": "en_US.UTF-8",   // Default system locale
                "default_password_hash": null      // Optional: Default password hash for user
            }
        }
    }

    You can modify these values to match your environment's requirements. The configuration supports environment variable overrides using the following format:

    • VM_DISK_PATH for disk_path
    • VM_DEFAULT_ISO for default_iso
    • VM_DEFAULT_MASTER_IMAGE for default_master_image
    • VM_DEFAULT_NAME for default_name
    • VM_DEFAULT_MEMORY for default_memory
    • VM_DEFAULT_VCPUS for default_vcpus
    • VM_DEFAULT_DISK_SIZE for default_disk_size
    • VM_DEFAULT_OS_VARIANT for default_os_variant
    • VM_DEFAULT_NETWORK for default_network
    • VM_IGNITION_DEFAULT_HOSTNAME for ignition.default_hostname
    • VM_IGNITION_DEFAULT_USER for ignition.default_user
    • VM_IGNITION_DEFAULT_SSH_KEY for ignition.default_ssh_key
    • VM_IGNITION_DEFAULT_TIMEZONE for ignition.default_timezone
    • VM_IGNITION_DEFAULT_LOCALE for ignition.default_locale
    • VM_IGNITION_DEFAULT_PASSWORD_HASH for ignition.default_password_hash

    Performance Tuning

    Connection Pool Configuration

    python
    connection_pool = LibvirtConnectionPool(
        max_connections=5,     # Maximum number of connections in the pool
        timeout=30,            # Timeout for getting a connection (seconds)
        uri='qemu:///system'   # Libvirt connection URI
    )

    Cache Configuration

    python
    vm_info_cache = VMInfoCache(
        max_size=50,           # Maximum number of VMs to cache
        ttl=60                 # Time-to-live for cache entries (seconds)
    )

    Logging Configuration

    python
    logging.basicConfig(
        level=logging.INFO,
        format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
        handlers=[
            RotatingFileHandler(
                'kvm_mcp.log',
                maxBytes=10485760,  # 10MB
                backupCount=5
            ),
            logging.StreamHandler()
        ]
    )

    Getting Started

    Prerequisites

    • Python 3.6 or higher
    • KVM and libvirt installed on the host system
    • The network bridge configured (default: brforvms)
    • VM storage directory created (default: /vm/)
    • Sufficient system resources for your VM workload

    Installation

    1. Clone this repository:

    bash
    git clone https://github.com/yourusername/kvm-mcp.git
       cd kvm-mcp

    2. Create and activate a virtual environment:

    bash
    python3 -m venv .venv
       source .venv/bin/activate

    3. Install dependencies:

    bash
    pip install -r requirements.txt

    4. Configure the server:

    • Edit config.json to match your environment
    • Ensure all required directories exist
    • Verify network bridge configuration
    • Adjust performance settings as needed

    Usage

    1. Start the server:

    bash
    python3 kvm_mcp_server.py

    2. Send commands using JSON-RPC. Example scripts are provided:

    • create_vm.sh: Create a new VM using default configuration
    • get_vnc_ports.sh: Find VNC ports for running VMs

    Example Commands

    Create a New VM

    bash
    ./create_vm.sh

    This will create a new VM using the default configuration from config.json. You can override any of these defaults by providing them in the request.

    Find VNC Ports

    bash
    ./get_vnc_ports.sh

    This will show all running VMs and their VNC ports, making it easy to connect to their displays.

    List VMs with Cache Bypass

    bash
    echo '{"jsonrpc": "2.0", "method": "tools/call", "params": {"name": "list_vms", "arguments": {"no_cache": true}}, "id": 1}' | python3 kvm_mcp_server.py

    Monitoring and Troubleshooting

    Log Files

    • kvm_mcp.log: Current log file
    • kvm_mcp.log.1: Previous log file (rotated)
    • Logs include timing information, connection pool status, and cache hits/misses

    Performance Metrics

    • Connection pool usage statistics
    • Cache hit/miss ratios
    • Operation timing metrics
    • Resource utilization statistics

    Common Issues and Solutions

    1. Connection Pool Exhaustion

    • Symptom: Slow response times or connection errors
    • Solution: Increase max_connections in the connection pool configuration

    2. Cache Invalidation Issues

    • Symptom: Stale VM information
    • Solution: Use no_cache parameter or reduce cache TTL

    3. Resource Cleanup

    • Symptom: Resource leaks or connection issues
    • Solution: Ensure proper shutdown using SIGTERM or SIGINT

    Project Structure

    • kvm_mcp_server.py: Main server implementation
    • config.json: Configuration file
    • requirements.txt: Python dependencies
    • Example scripts in the root directory
    • Test suite in the tests/ directory

    Contributing

    Contributions are welcome! Please feel free to submit a Pull Request.

    License

    This project is licensed under the MIT License - see the LICENSE file for details.

    Similar MCP

    Based on tags & features

    • AD

      Adls Mcp Server

      Python·
      4
    • KI

      Kill Process Mcp

      Python·
      9
    • DA

      Davinci Resolve Mcp

      Python·
      327
    • BI

      Biothings Mcp

      Python·
      25

    Trending MCP

    Most active this week

    • PL

      Playwright Mcp

      TypeScript·
      22.1k
    • SE

      Serena

      Python·
      14.5k
    • MC

      Mcp Playwright

      TypeScript·
      4.9k
    • MC

      Mcp Server Cloudflare

      TypeScript·
      3.0k
    View All MCP Servers

    Similar MCP

    Based on tags & features

    • AD

      Adls Mcp Server

      Python·
      4
    • KI

      Kill Process Mcp

      Python·
      9
    • DA

      Davinci Resolve Mcp

      Python·
      327
    • BI

      Biothings Mcp

      Python·
      25

    Trending MCP

    Most active this week

    • PL

      Playwright Mcp

      TypeScript·
      22.1k
    • SE

      Serena

      Python·
      14.5k
    • MC

      Mcp Playwright

      TypeScript·
      4.9k
    • MC

      Mcp Server Cloudflare

      TypeScript·
      3.0k