项目简介
这是一个基于 Model Context Protocol (MCP) 实现的服务器端应用,专门用于通过标准化的 JSON-RPC 接口管理 KVM 虚拟机。它封装了底层的 KVM 操作,如 'virsh' 等命令,为 LLM 或其他客户端提供一个统一、简化的远程控制接口。
主要功能点
- 虚拟机生命周期管理: 支持创建、启动、停止、重启虚拟机。
- 虚拟机列表: 获取当前系统中所有虚拟机的状态和基本信息。
- 网络配置: 支持通过指定的网桥(如 'brforvms')配置虚拟机网络。
- 存储配置: 支持指定虚拟机磁盘存储位置和格式(如 qcow2)。
- 图形显示: 获取正在运行虚拟机的 VNC 连接信息(端口)。
- Ignition 配置: 支持在创建 CoreOS 类虚拟机时注入 Ignition 配置。
安装步骤
- 克隆仓库:
git clone https://github.com/steveydevey/kvm-mcp.git cd kvm-mcp - 创建并激活 Python 虚拟环境:
python3 -m venv .venv source .venv/bin/activate - 安装依赖:
pip install -r requirements.txt - 配置服务器:
- 编辑 '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 以更自然的方式与服务器交互。
信息
分类
桌面与硬件