项目简介

这是一个基于 Model Context Protocol (MCP) 实现的服务器端应用,专门用于通过标准化的 JSON-RPC 接口管理 KVM 虚拟机。它封装了底层的 KVM 操作,如 'virsh' 等命令,为 LLM 或其他客户端提供一个统一、简化的远程控制接口。

主要功能点

  • 虚拟机生命周期管理: 支持创建、启动、停止、重启虚拟机。
  • 虚拟机列表: 获取当前系统中所有虚拟机的状态和基本信息。
  • 网络配置: 支持通过指定的网桥(如 'brforvms')配置虚拟机网络。
  • 存储配置: 支持指定虚拟机磁盘存储位置和格式(如 qcow2)。
  • 图形显示: 获取正在运行虚拟机的 VNC 连接信息(端口)。
  • Ignition 配置: 支持在创建 CoreOS 类虚拟机时注入 Ignition 配置。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/steveydevey/kvm-mcp.git
    cd kvm-mcp
  2. 创建并激活 Python 虚拟环境:
    python3 -m venv .venv
    source .venv/bin/activate
  3. 安装依赖:
    pip install -r requirements.txt
  4. 配置服务器:
    • 编辑 'config.json' 文件,根据您的 KVM 环境调整虚拟机存储路径、默认 ISO 路径、默认配置等。
    • 确保您的系统已安装 KVM 和 'libvirt'。
    • 确保 'libvirt' 服务正在运行。
    • 确保 'config.json' 中配置的虚拟机存储目录和网络桥接(默认为 'brforvms')已存在或配置正确。

服务器配置 (供 MCP 客户端使用)

MCP 客户端需要知道如何启动这个 MCP 服务器进程以便与其通信。以下是 MCP 客户端通常需要配置的服务器启动信息示例 (JSON 格式),用户需要根据实际安装路径和环境进行调整:

{
  "server name": "kvm-control", // 服务器在客户端中显示的名称,通常是唯一的标识符
  "command": "python3",       // 启动服务器的可执行命令
  "args": [                   // 传递给命令的参数列表
    "/path/to/your/kvm-mcp/kvm_mcp_server.py" // kvm_mcp_server.py 文件的完整路径
  ]
}

注意: 请将 '/path/to/your/kvm-mcp/' 替换为实际克隆仓库并安装依赖后的项目路径。确保 'python3' 命令在客户端执行环境中可用,并且具有执行 'kvm_mcp_server.py' 的权限以及与 'libvirt' 交互所需的权限(通常需要运行在具有足够权限的用户下,如 root 或属于 'libvirt' 组的用户)。

基本使用方法

服务器启动后,它会监听标准输入 (stdin) 并通过标准输出 (stdout) 进行 JSON-RPC 通信(Stdio 传输协议)。MCP 客户端会负责建立这个通信通道并发送符合 MCP 协议的 JSON-RPC 请求。

客户端可以通过发送 'tools/call' 请求来调用服务器提供的各种工具(对应代码中的 '@server.call_tool()' 函数),例如:

  • 调用 'list_vms' 工具: 获取所有 KVM 虚拟机的列表和状态信息。
  • 调用 'create_vm' 工具: 根据提供的参数创建一个新的虚拟机实例。
  • 调用 'start_vm' 工具: 启动指定名称的虚拟机。
  • 调用 'get_vnc_ports' 工具: 获取当前正在运行虚拟机的 VNC 连接端口。

具体的请求参数和返回结构遵循 JSON-RPC 规范,并在 MCP 协议框架下定义。客户端通常会抽象这些底层细节,允许用户或 LLM 以更自然的方式与服务器交互。

信息

分类

桌面与硬件