QVMConsole MCP Server
QVMConsole MCP Server
QVMConsole 的 MCP (Model Context Protocol) Server,使 AI 助手能够通过自然语言管理虚拟机。
功能特性
🔍 查看模板列表 - 浏览所有可用的虚拟机模板
🚀 创建虚拟机 - 从模板快速创建虚拟机(支持自定义配置)
📊 查看虚拟机信息 - 获取详细信息,包括登录密码
📝 列出虚拟机 - 查看所有虚拟机及其状态
⚙️ 编辑虚拟机 - 修改 CPU、内存等配置
🖥️ VNC 操控 - 截图、点击、输入,AI 直接操控虚拟机画面
系统要求
Python 3.10+
Node.js 16+(使用 npx 方式)
一个运行中的 QVMConsole 实例
有效的 API Key(从 QVMConsole 管理面板获取)
安装
方式一:通过 npx 直接使用(推荐)
无需安装,直接使用:
npx @qvmconsole/mcp-server第一次运行时会自动安装 Python 依赖。
方式二:全局安装
npm install -g @qvmconsole/mcp-server
qvmconsole-mcp方式三:从源码安装
1. 克隆项目
git clone https://github.com/qvmconsole/qvmconsole.git
cd qvmconsole/Code/MCP\ Server2. 安装依赖
pip install -r requirements.txt配置
方式一:通过 Claude Desktop 配置(推荐)
直接在 Claude Desktop 配置中使用 env 字段,无需额外配置文件:
{
"mcpServers": {
"qvmconsole": {
"command": "npx",
"args": ["-y", "@qvmconsole/mcp-server"],
"env": {
"QVMC_BASE_URL": "http://your-qvmconsole-url:8082",
"QVMC_API_KEY_ID": "kvm_id_xxxxxxxxxxxxxxxxxx",
"QVMC_API_KEY": "kvm_sk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
}
}
}方式二:通过配置文件
创建 config/config.json 文件:
cp config/config.example.json config/config.json编辑 config/config.json:
{
"qvmconsole": {
"base_url": "http://your-qvmconsole-url:8082",
"api_key_id": "kvm_id_xxxxxxxxxxxxxxxxxx",
"api_key": "kvm_sk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"timeout": 30,
"verify_ssl": true
}
}配置优先级
环境变量(最高优先级)- Claude Desktop 的
env字段配置文件 -
config/config.json默认值
获取 API Key
登录 QVMConsole 管理面板
进入 个人中心 → API Key 管理
点击 生成 API Key
复制生成的
API Key ID和API Key
环境变量说明
QVMC_BASE_URL- QVMConsole 地址(必需)QVMC_API_KEY_ID- API Key ID(必需)QVMC_API_KEY- API Key(必需)QVMC_TIMEOUT- 请求超时时间(秒),默认 30QVMC_VERIFY_SSL- 是否验证 SSL 证书,默认 true
使用方法
在 Claude Desktop 中使用
在 Claude Desktop 的配置文件中添加:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
使用 npx(推荐)
{
"mcpServers": {
"qvmconsole": {
"command": "npx",
"args": [
"-y",
"@qvmconsole/mcp-server"
],
"env": {
"QVMC_BASE_URL": "http://your-qvmconsole-url:8082",
"QVMC_API_KEY_ID": "kvm_id_xxxxxxxxxxxxxxxxxx",
"QVMC_API_KEY": "kvm_sk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
}
}
}可选的环境变量:
QVMC_TIMEOUT: 请求超时时间(秒),默认 30QVMC_VERIFY_SSL: 是否验证 SSL 证书,默认 true
使用全局安装
{
"mcpServers": {
"qvmconsole": {
"command": "qvmconsole-mcp",
"env": {
"QVMC_BASE_URL": "http://your-qvmconsole-url:8082",
"QVMC_API_KEY_ID": "kvm_id_xxxxxxxxxxxxxxxxxx",
"QVMC_API_KEY": "kvm_sk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
}
}
}使用源码方式
{
"mcpServers": {
"qvmconsole": {
"command": "python",
"args": [
"/path/to/qvmconsole/Code/MCP Server/src/server.py"
],
"env": {
"QVMC_BASE_URL": "http://your-qvmconsole-url:8082",
"QVMC_API_KEY_ID": "kvm_id_xxxxxxxxxxxxxxxxxx",
"QVMC_API_KEY": "kvm_sk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
}
}
}注意: 使用 env 字段配置后,不再需要单独创建 config/config.json 文件。
重启 Claude Desktop 后即可使用。
直接运行测试
# 使用 npx
npx @qvmconsole/mcp-server
# 或使用 Python
python src/server.py使用示例
在 Claude Desktop 中,您可以使用自然语言与虚拟机交互:
"列出所有可用的虚拟机模板"
"使用 ubuntu-22.04 模板创建一个虚拟机,名称为 test-vm,2核4G"
"查看 test-vm 的详细信息,包括登录密码"
"将 test-vm 的内存调整为 8G"
"列出所有虚拟机"
可用工具
虚拟机管理
1. list_templates
列出所有可用的虚拟机模板。
2. create_vm_from_template
从模板创建虚拟机。
参数:
template_name(必填) - 模板名称vm_name(必填) - 虚拟机名称vcpu(必填) - CPU 核心数ram(必填) - 内存大小(GB)disk_size(可选) - 磁盘大小(GB)hostname(可选) - 主机名password(可选) - 登录密码(不填则自动生成)user(可选) - 用户名autostart(可选) - 是否自动启动remark(可选) - 备注信息
3. get_vm_info
获取虚拟机详细信息,包括登录密码。
参数:
vm_name(必填) - 虚拟机名称show_password(可选) - 是否显示密码,默认 true
4. list_vms
列出所有虚拟机及其基本状态。
5. edit_vm
编辑虚拟机配置。
参数:
vm_name(必填) - 虚拟机名称vcpu(可选) - CPU 核心数ram(可选) - 内存大小(GB)remark(可选) - 备注信息autostart(可选) - 是否自动启动
VNC 远程控制
6. vnc_status
查看虚拟机 VNC 状态。
参数:
vm_name(必填) - 虚拟机名称
7. vnc_enable
开启虚拟机 VNC。
参数:
vm_name(必填) - 虚拟机名称password(可选) - VNC 密码
注意: VNC 默认仅本地访问 (127.0.0.1),如需远程访问请使用 vnc_expose
8. vnc_expose
切换 VNC 对外暴露状态。
参数:
vm_name(必填) - 虚拟机名称expose(可选) - True=对外暴露(0.0.0.0),False=仅本地(127.0.0.1),默认 True
安全警告: 暴露 VNC 到公网有安全风险,建议设置密码并使用防火墙
9. vnc_screenshot
截取虚拟机 VNC 画面。
参数:
vm_name(必填) - 虚拟机名称
返回: PNG 格式的屏幕截图
10. vnc_click
在 VNC 画面上点击鼠标。
参数:
vm_name(必填) - 虚拟机名称x(必填) - 横坐标(像素)y(必填) - 纵坐标(像素)button(可选) - 鼠标按键 (left/right/middle)
11. vnc_type
在 VNC 中输入文本。
参数:
vm_name(必填) - 虚拟机名称text(必填) - 要输入的文本
12. vnc_key
在 VNC 中按下特殊按键。
参数:
vm_name(必填) - 虚拟机名称key(必填) - 按键名称 (enter/esc/tab/backspace/delete/up/down/left/right/space/ctrl/alt/shift/f1-f12)
13. vnc_move
在 VNC 中移动鼠标。
参数:
vm_name(必填) - 虚拟机名称x(必填) - 横坐标(像素)y(必填) - 纵坐标(像素)
日志
日志文件默认保存在 logs/mcp-server.log,可在配置文件中修改。
故障排查
API Key 无效
确保您的 API Key 正确且未被撤销,在 QVMConsole 管理面板中检查 API Key 状态。
连接失败
检查:
QVMConsole 服务是否运行
base_url配置是否正确网络连接是否正常
防火墙设置是否允许连接
权限不足
确保 API Key 对应的用户有足够的权限执行相应操作。
安全提示
🔐 不要将
config/config.json提交到版本控制系统🔑 妥善保管您的 API Key
🛡️ 建议在生产环境使用 HTTPS
👤 为 MCP Server 创建专用的受限权限用户
开发
运行测试
pytest tests/项目结构
QVMConsole-MCP-Server/
├── src/
│ ├── __init__.py
│ ├── server.py # MCP Server 主入口
│ ├── client.py # QVMConsole API 客户端
│ ├── tools.py # MCP 工具实现
│ └── config.py # 配置管理
├── config/
│ └── config.example.json
├── docs/
│ ├── mcp-server-design.md
│ └── usage.md
├── tests/
├── requirements.txt
└── README.md许可证
Apache License 2.0
相关链接
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/QVMConsole/MCP_Server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server