使用说明
MCP Proxmox服务器
Python中的高级Proxmox模型上下文协议(MCP)服务器公开了丰富的Proxmox实用程序,用于发现、生命周期、网络、快照/备份、指标、池/权限和编排。
- 指南参考: MCP快速入门(Python)
- 结构镜像:
bsahane/mcp-ansible
快速启动
git clone https://github.com/bsahane/mcp-proxmox.git
cd mcp-proxmox
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -U pip
pip install -r requirements.txt
# (Optional) install the package locally
pip install -e .
.env配置
- 复制
.env.example向.env并编辑值:
cp .env.example .env
.env 钥匙:
PROXMOX_API_URL="https://proxmox.example.com:8006"
PROXMOX_TOKEN_ID="root@pam!mcp-proxmox"
PROXMOX_TOKEN_SECRET="<secret>"
PROXMOX_VERIFY="true"
PROXMOX_DEFAULT_NODE="pve"
PROXMOX_DEFAULT_STORAGE="local-lvm"
PROXMOX_DEFAULT_BRIDGE="vmbr0"
笔记:
- 使用具有适当ACL的API令牌;为了发现,
PVEAuditor在/足够了;对于生命周期,授予更窄的角色(例如。,PVEVMAdmin)在游泳池上。 - 使用
.env通过以下方式避免zsh历史扩展问题!在令牌ID中。
运行MCP服务器(stdio)
首选(模块形式):
source .venv/bin/activate
python -m proxmox_mcp.server
或安装控制台脚本:
source .venv/bin/activate
proxmox-mcp
在游标中配置
编辑 ~/.cursor/mcp.json (便携式示例):
{
"mcpServers": {
"proxmox-mcp": {
"command": "python",
"args": ["-m", "proxmox_mcp.server"]
}
}
}
在Claude中配置桌面版
增添 ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"proxmox-mcp": {
"command": "python",
"args": ["-m", "proxmox_mcp.server"]
}
}
}
工具参考
所有工具均可通过MCP获得。接受破坏性工具 confirm,并且支持大多数写入操作 dry_run, wait, timeout, poll_interval.
每个工具的格式如下:
- 描述
- 示例问题→ 可能的答案(形状)
岩芯发现
proxmox-list-nodes- 列出群集节点(名称、状态、CPU/RAM/磁盘摘要)
- 示例:“列出群集节点”
- 答案:
[ { "node": "pve", "status": "online", ... } ]
proxmox-node-status- 详细的节点健康状况(负载、正常运行时间、版本)
- 例子:
{ "node": "pve" } - 答案:
{ "kversion": "...", "uptime": 123456, ... }
proxmox-list-vms- 列出虚拟机(按节点、状态、名称子字符串过滤)
- 例子:
{ "node": "pve", "status": "running" } - 答案:
[ { "vmid": 100, "name": "web01", ... } ]
proxmox-vm-info- 通过以下方式获取VM详细信息
vmid或name(+可选节点),包括配置 - 例子:
{ "name": "web01" } - 答案:
{ "selector": {...}, "config": {...} }
- 通过以下方式获取VM详细信息
proxmox-list-lxc- 列出LXC容器(可过滤)
- 例子:
{ "node": "pve" } - 答案:
[ { "vmid": 50001, "name": "ct01", ... } ]
proxmox-lxc-info- 通过以下方式获取LXC详细信息
vmid或name(+可选节点) - 例子:
{ "vmid": 50001 } - 答案:
{ "selector": {...}, "config": {...} }
- 通过以下方式获取LXC详细信息
proxmox-list-storage- 列出存储(类型,免费/已用)
- 例子:
{} - 答案:
[ { "storage": "local-lvm", "type": "lvmthin", ... } ]
proxmox-storage-content- 列出存储内容(ISO、模板、图像)
- 例子:
{ "node": "pve", "storage": "local" } - 答案:
[ { "volid": "local:iso/foo.iso", ... } ]
proxmox-list-bridges- 列出节点网桥(vmbr…)
- 例子:
{ "node": "pve" } - 答案:
[ { "iface": "vmbr0", ... } ]
proxmox-list-tasks- 最近的任务(按节点、用户筛选)
- 例子:
{ "node": "pve", "limit": 20 } - 答案:
[ { "upid": "UPID:...", "status": "OK" }, ... ]
proxmox-task-status- 检查任务状态
- 例子:
{ "upid": "UPID:..." } - 答案:
{ "status": "stopped", "exitstatus": "OK" }
VM生命周期
proxmox-clone-vm- 将模板VM克隆到新的VMID/名称(支持目标节点、存储)
- 例子:
{ "source_vmid": 101, "new_vmid": 50009, "name": "web01", "storage": "local-lvm", "confirm": true, "wait": true } - 答案:
{ "upid": "UPID:...", "status": {...} }
proxmox-create-vm- 从ISO/模板创建新VM(最小配置)
- 例子:
{ "node": "pve", "vmid": 200, "name": "web02", "iso": "debian.iso", "confirm": true } - 答案:
{ "upid": "UPID:..." }
proxmox-delete-vm- 删除虚拟机(确认、清除)
- 例子:
{ "name": "web01", "purge": true, "confirm": true } - 答案:
{ "upid": "UPID:..." }
proxmox-start-vm/proxmox-stop-vm/proxmox-reboot-vm/proxmox-shutdown-vm- 管理电源状态(停止支持硬和超时)
- 例子:
{ "name": "web01", "wait": true } - 答案:
{ "upid": "UPID:...", "status": {...} }
proxmox-migrate-vm- 实时/离线迁移到另一个节点
- 例子:
{ "name": "web01", "target_node": "pve2", "live": true } - 答案:
{ "upid": "UPID:..." }
proxmox-resize-vm-disk- 在目标磁盘(例如scsi0)上增加磁盘(GB)
- 例子:
{ "name": "web01", "disk": "scsi0", "grow_gb": 10, "confirm": true, "wait": true } - 答案:
{ "upid": "UPID:...", "status": {...} }
proxmox-configure-vm- 设置白名单参数(内核、内存、气球、netX、代理等)
- 例子:
{ "name": "web01", "params": { "memory": 4096, "cores": 4 }, "confirm": true } - 答案:
{ "upid": "UPID:..." }或{ "result": null }
LXC生命周期
proxmox-create-lxc- 从模板创建容器(CPU/mem、rootfs大小、网络、存储)
- 例子:
{ "node": "pve", "vmid": 50050, "hostname": "ct01", "ostemplate": "debian-12.tar.zst", "confirm": true } - 答案:
{ "upid": "UPID:..." }
proxmox-delete-lxc/proxmox-start-lxc/proxmox-stop-lxc/proxmox-configure-lxc- 管理容器生命周期和配置
云初始化和网络
proxmox-cloudinit-set- 设置CI参数(ipconfig0、sshkeys、ciuser/cipassword)
- 例子:
{ "name": "web01", "ipconfig0": "ip=192.168.1.50/24,gw=192.168.1.1", "confirm": true } - 答案:
{ "upid": "UPID:..." }或{ "result": null }
proxmox-vm-nic-add/proxmox-vm-nic-remove- 添加/删除NIC(网桥、型号、VLAN)
proxmox-vm-firewall-get/proxmox-vm-firewall-set- 获取/设置每个VM的防火墙状态和规则
图像、模板、快照、备份
proxmox-upload-iso/proxmox-upload-template- 将ISO或LXC模板上传到存储
proxmox-template-vm- 将VM转换为模板
proxmox-list-snapshots/proxmox-create-snapshot/proxmox-delete-snapshot/proxmox-rollback-snapshot- 管理快照;回滚支持
wait
- 管理快照;回滚支持
proxmox-backup-vm/proxmox-restore-vm- 运行vzdump并还原存档
度量和监控
proxmox-vm-metrics- VM的RRD指标(时间框架,cf)
proxmox-node-metrics- 节点的RRD指标
池、用户、权限
proxmox-list-pools/proxmox-create-pool/proxmox-delete-pool/proxmox-pool-add/proxmox-pool-removeproxmox-list-users/proxmox-list-roles/proxmox-assign-permission
编排助手
proxmox-wait-task- 轮询任务直到完成/超时
proxmox-register-vm-as-host- 为Ansible清单(主机名、IP、SSH用户/密钥)发送JSON/INI代码段
proxmox-guest-exec(可选)- 通过QEMU来宾代理运行命令(需要来宾中的代理)
例子
- 列表节点:
{}为了proxmox-list-nodes - 节点上的虚拟机
pve:{ "node": "pve" }为了proxmox-list-vms - 克隆模板:
{ "source_vmid": 101, "new_vmid": 50009, "name": "web01", "storage": "local-lvm", "confirm": true, "wait": true } - 配置云初始化IP:
{ "name": "web01", "ipconfig0": "ip=192.168.1.50/24,gw=192.168.1.1", "confirm": true }
备注
- 服务器使用stdio传输;仅将MCP协议打印到stdout。日志将转到stderr。
- 身份验证使用您的环境变量和/或
.env文件。 - 除非您指定,否则节点之间的名称冲突将返回明显的错误
node.
发展
# Lint/type-check as needed (not included by default)
许可证
麻省理工学院
