Token导航 LogoToken导航

MCP Server · 搜索检索

KVM MCP Server

An MCP server for KVM hypervisors

stdio官方级别未说明来源级核验工具 0
性能优化Python自动化运维

快速开始

作者 / 组织
steveydevey
提供方
steveydevey
运行时
Python

工具数量

0

来源目录标注

资源数量

0

来源目录标注

提示词数量

0

来源目录标注

GitHub Star

12

仓库热度

收录来源

3 个

MCP.so

选型结论

KVM MCP Server 属于搜索检索类 MCP Server,公开资料标注 0 个工具,通过stdio 本地进程接入,客户端适配情况以官方文档为准,有可以直接复制的安装命令;接入前先确认权限范围。

分类

搜索检索

传输方式

stdio

认证方式

无需认证

部署方式

支持远程部署

安装与配置

安装命令

python3 -m venv .venv

公开命令不是通用的启动方式,拼不出可靠配置示例;请在客户端 MCP 配置里按官方文档填写 command 和 args。

上手步骤

  1. 1

    准备运行环境

    stdio 服务在本地起进程,需要先装好 Python,再按安装命令拉取依赖。

  2. 2

    安装服务

    复制下面的安装命令执行;命令里带占位符的位置换成自己的密钥或路径。

  3. 3

    写入客户端配置

    在客户端的 MCP 配置里填启动命令和参数,保存后完全退出客户端再打开,让新配置生效。

  4. 4

    验证是否可用

    连接成功后客户端会列出 0 个工具,随便调一个只读工具确认能返回结果。

接入前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

详细介绍

KVM MCP服务器

一个功能强大的JSON-RPC服务器,用于通过简单直观的界面管理KVM虚拟机。此服务器提供了一种使用标准化协议控制和监视KVM虚拟机的集中方式。

为什么是这个项目?

管理KVM虚拟机通常需要使用多个命令行工具,如 virsh, virt-install,以及 qemu-system该项目旨在:

  1. 简化虚拟机管理:为所有VM操作提供单一、统一的接口
  2. 启用远程控制:允许通过JSON-RPC远程管理虚拟机
  3. 自动化VM操作:使编写脚本和自动化VM管理任务变得容易
  4. 规范VM配置:确保整个基础架构中的VM设置一致
  5. 优化性能:实施高效的资源管理和缓存策略

特性

  • VM生命周期管理:

- 使用可定制的参数创建新的虚拟机 - 启动/停止/重新启动虚拟机 - 列出所有可用的虚拟机及其状态 - 自动状态跟踪和恢复

  • 网络管理:

- 使用网桥配置VM网络 - 支持 brforvms 桥 - 自动网络接口配置 - IP地址跟踪和管理

  • 存储管理:

- 可配置的VM磁盘存储位置 - 支持多种磁盘格式(qcow2) - 可配置的磁盘大小 - 自动磁盘清理和管理

  • 显示管理:

- VNC支持图形访问 - 自动VNC端口分配 - 用于查找和连接VM显示器的工具 - 显示状态跟踪和恢复

  • 安装支持:

- 从ISO映像安装网络 - 从CDROM进行本地安装 - 支持各种操作系统变体 - 自动安装配置

  • 性能优化:

- libvirt的连接池,以减少连接开销 - VM信息缓存可提高响应速度 - 异步处理以实现更好的并发性 - 用于诊断和故障排除的高级日志记录 - 优雅的关机处理,可进行适当的资源清理 - 自动连接恢复和验证 - API操作的速率限制 - 绩效指标收集

性能优势

连接池

  • 减少延迟:消除了重复打开和关闭libvirt连接的开销
  • 资源效率:维护可重用连接池,减少系统资源使用
  • 自动恢复:自动检测并替换死连接
  • 可配置的池大小:根据您的工作负载调整连接数

缓存

  • 更快的响应时间:减少对libvirt的常见操作的重复查询
  • 可配置TTL:根据需要设置缓存过期时间
  • 选择性旁路:对于需要新数据的操作,可以选择绕过缓存
  • 自动失效:当VM状态发生变化时,缓存会自动失效

异步处理

  • 提高并发性:同时处理多个请求
  • 更好的资源利用:有效利用系统资源
  • 非阻塞操作:长时间运行的操作不会阻塞服务器
  • 优雅地关闭:关机期间正确清理资源

监测和诊断

  • 结构化日志记录:易于解析的日志格式用于分析
  • 性能指标:跟踪操作时间和资源使用情况
  • 错误跟踪:用于故障排除的详细错误记录
  • 资源监控:跟踪连接池使用情况和缓存有效性

配置

服务器使用JSON配置文件(config.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
        }
    }
}

您可以修改这些值以满足环境的要求。该配置支持使用以下格式覆盖环境变量:

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

性能调整

连接池配置

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
)

缓存配置

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

日志记录配置

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()
    ]
)

入门指南

先决条件

  • Python 3.6或更高版本
  • KVM和libvirt安装在主机系统上
  • 配置的网桥(默认值: brforvms)
  • 已创建VM存储目录(默认: /vm/)
  • 为VM工作负载提供足够的系统资源

安装

  1. 克隆此存储库:
   git clone https://github.com/yourusername/kvm-mcp.git
   cd kvm-mcp
  1. 创建并激活虚拟环境:
   python3 -m venv .venv
   source .venv/bin/activate
  1. 安装依赖项:
   pip install -r requirements.txt
  1. 配置服务器:

- 编辑 config.json 与您的环境相匹配 - 确保所有必需的目录都存在 - 验证网桥配置 - 根据需要调整性能设置

用法

  1. 启动服务器:
   python3 kvm_mcp_server.py
  1. 使用JSON-RPC发送命令。提供了示例脚本:

- create_vm.sh:使用默认配置创建新VM - get_vnc_ports.sh:查找用于运行VM的VNC端口

示例命令

创建新VM

./create_vm.sh

这将使用默认配置创建一个新的VM config.json。您可以通过在请求中提供这些默认值来覆盖它们中的任何一个。

查找VNC端口

./get_vnc_ports.sh

这将显示所有正在运行的虚拟机及其VNC端口,使连接到其显示器变得容易。

列出具有缓存旁路的虚拟机

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

监控和故障排除

日志文件

  • kvm_mcp.log:当前日志文件
  • kvm_mcp.log.1:上一个日志文件(轮换)
  • 日志包括计时信息、连接池状态和缓存命中/未命中

性能指标

  • 连接池使用统计
  • 缓存命中率/未命中率
  • 操作时间度量
  • 资源利用统计

常见问题及解决方法

  1. 连接池耗尽

- 症状:响应时间慢或连接错误 - 解决方案:增加 max_connections 在连接池配置中

  1. 缓存无效问题

- 症状:VM信息陈旧 - 解决方案:使用 no_cache 参数或减少缓存TTL

  1. 资源清理

- 症状:资源泄漏或连接问题 - 解决方案:使用SIGTERM或SIGINT确保正确关机

项目结构

  • kvm_mcp_server.py:主服务器实现
  • config.json:配置文件
  • requirements.txt:Python依赖关系
  • 根目录中的示例脚本
  • 测试套件 tests/ 目录

贡献

欢迎投稿!请随时提交拉取请求。

许可证

此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。

工具与能力

工具数量

0

资源数量

0

提示词数量

0

能力标签

research-and-datakvm-hypervisormcp-serverKVM管理Python本地部署虚拟化JSON-RPC

数量来自来源目录的标注,具体工具清单以官方文档为准。

典型使用场景

查资料带出处

把网页、论文和文档的检索结果连同链接一起带回对话。

站内知识检索

在自己的文档库里做语义搜索,比关键词更贴题。

事实核对

交叉多个来源确认一条信息,减少模型凭记忆作答。

选择建议

值得选的地方

  • 只提供 0 个工具,职责集中,接入后不容易误操作。
  • 有现成的安装命令,不用自己找入口,照着跑就能起服务。
  • 3 个目录同时收录,信息可以交叉核对。

先想清楚的地方

  • stdio 方式要求本地装好 Python,换机器要重新装一遍。
  • 公开摘要偏短,具体能力和限制要回到仓库确认。
  • 第三方目录整理,版本更新和行为细节以官方仓库为准。

更适合

  • 需要在搜索检索场景里让模型直接调用外部能力的人。
  • 想先快速试一下、能接受在本地跑服务的人。

不太适合

  • 完全不想在本地装环境的人。
  • 需要厂商级 SLA 和技术支持的生产环境。

同类对比

5 个同类
MCP Server工具数传输方式安装命令收录来源最后核验
KVM MCP Server

MCP.so · 本页

0stdio有3 个2026-05-17
Baidu Netdisk

MCP World

未标注未说明未标注1 个2026-05-17
Sequentialthinking

MCP.so

1SSE有2 个2026-05-17
Brave Search 433812ff

MCP World

2未说明未标注1 个2026-05-17
mindsdb (430e18)

MCP World

0未说明有1 个2026-05-17

按同分类和工具数量挑出最接近的几条,字段以各自详情页为准。

常见问题

5 条

KVM MCP Server 怎么安装?

公开资料给出的安装命令是 python3 -m venv .venv,运行环境为 Python。装完后按客户端要求写进 MCP 配置,重启客户端生效。

KVM MCP Server 怎么在 Claude Desktop、Cursor 里配置?

它是stdio 本地进程,客户端配置里要写启动命令和参数,运行环境是 Python;保存后完全退出客户端再打开,配置才会生效。

KVM MCP Server 收费吗?

本站只整理公开资料,不代收费用,也没有标注具体价格。是否收费取决于服务本身和背后的接口额度,正式使用前按官方说明确认。

KVM MCP Server 需要 API Key 吗?

公开资料标注为无需认证,装好就能连;如果实际调用时报鉴权错误,按官方文档补上凭据。

KVM MCP Server 支持哪些客户端?

公开资料没有标注具体客户端;能配置本地 MCP 命令的客户端都能接,配置方式参照官方文档。

来源信息

继续浏览同类 MCP