Servidor KVM MCP
Un potente servidor JSON-RPC para gestionar máquinas virtuales KVM mediante una interfaz sencilla e intuitiva. Este servidor proporciona una forma centralizada de controlar y supervisar sus máquinas virtuales KVM mediante un protocolo estandarizado.
¿Por qué este proyecto?
La gestión de máquinas virtuales KVM suele requerir el uso de varias herramientas de línea de comandos como virsh
, virt-install
y qemu-system
. Este proyecto tiene como objetivo:
Simplifique la administración de máquinas virtuales : proporcione una interfaz única y unificada para todas las operaciones de máquinas virtuales
Habilitar control remoto : permite la administración remota de máquinas virtuales a través de JSON-RPC
Automatice las operaciones de VM : facilite la creación de scripts y la automatización de tareas de administración de VM
Estandarizar la configuración de VM : garantizar una configuración de VM consistente en toda su infraestructura
Optimizar el rendimiento : implementar estrategias eficientes de gestión de recursos y almacenamiento en caché
Características
Gestión del ciclo de vida de las máquinas virtuales :
Cree nuevas máquinas virtuales con parámetros personalizables
Iniciar/detener/reiniciar máquinas virtuales
Enumere todas las máquinas virtuales disponibles con su estado
Seguimiento y recuperación automáticos del estado
Gestión de red :
Configurar la red de máquinas virtuales mediante puentes
Soporte para el puente
brforvms
Configuración automática de la interfaz de red
Seguimiento y gestión de direcciones IP
Gestión de almacenamiento :
Ubicación de almacenamiento del disco de VM configurable
Compatibilidad con varios formatos de disco (qcow2)
Tamaños de disco configurables
Limpieza y gestión automática del disco
Gestión de pantalla :
Compatibilidad con VNC para acceso gráfico
Asignación automática de puerto VNC
Herramientas para buscar y conectarse a pantallas de máquinas virtuales
Seguimiento y recuperación del estado de la pantalla
Soporte de instalación :
Instalación de red desde imágenes ISO
Instalación local desde CDROM
Compatibilidad con varias variantes del sistema operativo
Configuración de instalación automatizada
Optimizaciones de rendimiento :
Agrupación de conexiones para libvirt para reducir la sobrecarga de conexión
Almacenamiento en caché de información de VM para una mejor capacidad de respuesta
Procesamiento asincrónico para una mejor concurrencia
Registro avanzado para diagnóstico y resolución de problemas
Manejo elegante del apagado para una limpieza adecuada de los recursos
Recuperación y validación automática de la conexión
Limitación de velocidad para operaciones de API
Recopilación de métricas de rendimiento
Beneficios de rendimiento
Agrupación de conexiones
Latencia reducida : elimina la sobrecarga de abrir y cerrar repetidamente las conexiones de libvirt
Eficiencia de recursos : mantiene un grupo de conexiones reutilizables, lo que reduce el uso de recursos del sistema.
Recuperación automática : detecta y reemplaza conexiones inactivas automáticamente
Tamaño de grupo configurable : ajuste la cantidad de conexiones según su carga de trabajo
Almacenamiento en caché
Tiempos de respuesta más rápidos : reduce las consultas repetidas a libvirt para operaciones comunes
TTL configurable : configure la expiración de la caché según sus necesidades
Bypass selectivo : opción para omitir el caché para operaciones que requieren datos nuevos
Invalidación automática : la caché se invalida automáticamente cuando cambian los estados de la máquina virtual.
Procesamiento asincrónico
Concurrencia mejorada : maneja múltiples solicitudes simultáneamente
Mejor utilización de recursos : uso eficiente de los recursos del sistema
Operaciones sin bloqueo : las operaciones de larga duración no bloquean el servidor.
Apagado elegante : limpieza adecuada de recursos durante el apagado
Monitoreo y diagnóstico
Registro estructurado : formato de registro fácil de analizar para su análisis
Métricas de rendimiento : Realice un seguimiento del tiempo de operación y el uso de recursos
Seguimiento de errores : registro detallado de errores para la resolución de problemas
Monitoreo de recursos : realice un seguimiento del uso del grupo de conexiones y la efectividad de la caché
Configuración
El servidor utiliza un archivo de configuración JSON ( config.json
) para almacenar los valores y rutas predeterminados. Esto facilita su portabilidad y personalización. La configuración incluye:
Puede modificar estos valores para que se ajusten a los requisitos de su entorno. La configuración admite la anulación de variables de entorno con el siguiente formato:
VM_DISK_PATH
paradisk_path
VM_DEFAULT_ISO
paradefault_iso
VM_DEFAULT_MASTER_IMAGE
paradefault_master_image
VM_DEFAULT_NAME
paradefault_name
VM_DEFAULT_MEMORY
paradefault_memory
VM_DEFAULT_VCPUS
paradefault_vcpus
VM_DEFAULT_DISK_SIZE
paradefault_disk_size
VM_DEFAULT_OS_VARIANT
paradefault_os_variant
VM_DEFAULT_NETWORK
paradefault_network
VM_IGNITION_DEFAULT_HOSTNAME
paraignition.default_hostname
VM_IGNITION_DEFAULT_USER
paraignition.default_user
VM_IGNITION_DEFAULT_SSH_KEY
paraignition.default_ssh_key
VM_IGNITION_DEFAULT_TIMEZONE
paraignition.default_timezone
VM_IGNITION_DEFAULT_LOCALE
paraignition.default_locale
VM_IGNITION_DEFAULT_PASSWORD_HASH
paraignition.default_password_hash
Ajuste del rendimiento
Configuración del grupo de conexiones
Configuración de caché
Configuración de registro
Empezando
Prerrequisitos
Python 3.6 o superior
KVM y libvirt instalados en el sistema host
El puente de red configurado (predeterminado:
brforvms
)Directorio de almacenamiento de VM creado (predeterminado:
/vm/
)Recursos del sistema suficientes para la carga de trabajo de su máquina virtual
Instalación
Clonar este repositorio:
git clone https://github.com/yourusername/kvm-mcp.git cd kvm-mcpCrear y activar un entorno virtual:
python3 -m venv .venv source .venv/bin/activateInstalar dependencias:
pip install -r requirements.txtConfigurar el servidor:
Edite
config.json
para que coincida con su entornoAsegúrese de que existan todos los directorios necesarios
Verificar la configuración del puente de red
Ajuste la configuración de rendimiento según sea necesario
Uso
Iniciar el servidor:
python3 kvm_mcp_server.pyEnvíe comandos mediante JSON-RPC. Se proporcionan scripts de ejemplo:
create_vm.sh
: crea una nueva máquina virtual usando la configuración predeterminadaget_vnc_ports.sh
: Encuentra puertos VNC para máquinas virtuales en ejecución
Comandos de ejemplo
Crear una nueva máquina virtual
Esto creará una nueva máquina virtual con la configuración predeterminada de config.json
. Puede anular cualquiera de estos valores predeterminados proporcionándolos en la solicitud.
Encontrar puertos VNC
Esto mostrará todas las máquinas virtuales en ejecución y sus puertos VNC, lo que facilitará la conexión a sus pantallas.
Lista de máquinas virtuales con omisión de caché
Monitoreo y resolución de problemas
Archivos de registro
kvm_mcp.log
: archivo de registro actualkvm_mcp.log.1
: Archivo de registro anterior (rotado)Los registros incluyen información de tiempo, estado del grupo de conexiones y aciertos y errores de caché.
Métricas de rendimiento
Estadísticas de uso del pool de conexiones
Tasas de aciertos y errores de caché
Métricas de tiempo de operación
Estadísticas de utilización de recursos
Problemas comunes y soluciones
Agotamiento del pool de conexiones
Síntoma: Tiempos de respuesta lentos o errores de conexión
Solución: Aumente
max_connections
en la configuración del grupo de conexiones
Problemas de invalidación de caché
Síntoma: Información de máquina virtual obsoleta
Solución: utilice el parámetro
no_cache
o reduzca el TTL de la caché
Limpieza de recursos
Síntoma: Fugas de recursos o problemas de conexión
Solución: Asegúrese de que el apagado sea correcto utilizando SIGTERM o SIGINT
Estructura del proyecto
kvm_mcp_server.py
: Implementación del servidor principalconfig.json
: Archivo de configuraciónrequirements.txt
: Dependencias de PythonScripts de ejemplo en el directorio raíz
Conjunto de pruebas en el directorio
tests/
Contribuyendo
¡Agradecemos sus contribuciones! No dude en enviar una solicitud de incorporación de cambios.
Licencia
Este proyecto está licenciado bajo la licencia MIT: consulte el archivo de LICENCIA para obtener más detalles.
This server cannot be installed
remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
Un servidor JSON-RPC que simplifica la administración de máquinas virtuales KVM al proporcionar una interfaz centralizada para las tareas de administración del ciclo de vida de las máquinas virtuales, redes, almacenamiento y visualización.
Related MCP Servers
- -securityAlicense-qualityA beginner-friendly MCP-inspired JSON-RPC server built with Node.js, offering basic client-server interaction through an 'initialize' capabilities handshake and an 'echo' function.Last updated -3MIT License
- -securityAlicense-qualityA VMware ESXi/vCenter management server based on MCP (Machine Control Protocol), providing simple REST API interfaces for virtual machine management.Last updated -36MIT License
- -securityFlicense-qualityA simple MCP server that allows accessing and executing shell commands on a VM machine through a web-based terminal interface, with automatic tunneling to make the VM accessible from anywhere.Last updated -1834
- -securityAlicense-qualityAn enhanced Python-based MCP server that enables complete VM lifecycle management and monitoring of Proxmox virtualization platforms through natural language, with 11 REST API endpoints for seamless integration.Last updated -12MIT License