mcpField
M
mcp-proxmox

mcp-proxmox

本地服务
github.com/antonio-mello-ai云与基础设施175 周前更新

关于 mcp-proxmox

mcp-proxmox 是面向 Proxmox VE 集群管理的 MCP 服务,供连接的 AI 助手查看和操作虚拟机、容器及集群资源。它覆盖从资源配置到监控、备份和迁移的多类操作,并对部分破坏性操作要求确认。

主要功能

  1. 01管理节点、虚拟机和容器
  2. 02创建、克隆及调整虚拟资源
  3. 03管理快照、备份与恢复
  4. 04查看存储、网络和防火墙
  5. 05监控指标、任务并迁移资源
  6. 06在 QEMU 虚拟机中执行命令

适用场景

  1. 01通过自然语言创建或启动虚拟机
  2. 02查看虚拟机资源使用和集群任务
  3. 03为虚拟机创建备份或恢复备份
  4. 04在集群节点间迁移虚拟机或容器

MCP 相关

作为 MCP 服务,向 AI 客户端提供 Proxmox VE 集群的发现、配置、生命周期管理、监控和迁移等工具。连接需要配置 Proxmox 主机和 API 令牌。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"antonio-mello-ai-mcp-proxmox": {
"command": "uvx",
"args": [
"mcp-proxmox"
]
}
}
}
启动命令uvx mcp-proxmox

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypimcp-proxmox1.2.2

工具

34

收录的工具列表 · 更新于 2 周前

此工具无需参数。

详细介绍

mcp-proxmox

mcp-proxmox MCP 服务

用于通过 Claude、Cursor 和 Cline 等 AI 助手管理 Proxmox VE 集群的 MCP 服务。

通过自然语言配置、管理和监控整个 Proxmox 基础设施。创建 VM 和容器、管理快照、浏览存储等。

快速开始

# Run directly with uvx (no install needed)
uvx mcp-proxmox

# Or install with pip
pip install mcp-proxmox

配置

设置以下环境变量(或创建 .env 文件):

PROXMOX_HOST=192.168.1.100          # Your Proxmox VE host
PROXMOX_TOKEN_ID=user@pam!mcp       # API token ID
PROXMOX_TOKEN_SECRET=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx  # API token secret

可选:

PROXMOX_PORT=8006                   # Default: 8006
PROXMOX_VERIFY_SSL=false            # Default: false
创建 Proxmox API 令牌
  1. 登录 Proxmox Web UI
  2. 前往 数据中心 > 权限 > API 令牌
  3. 点击 添加,为你的用户创建令牌
  4. 若要获得完整访问权限,请取消勾选“权限分离”;也可以分配特定权限:
    • VM.Audit — 读取 VM/CT 状态和配置
    • VM.PowerMgmt — 启动/停止/关机/重启
    • VM.Snapshot — 创建/回滚/删除快照
    • VM.Allocate — 创建/删除/克隆 VM 和容器
    • VM.Clone — 克隆操作
    • Datastore.Audit — 列出存储并浏览内容
    • Datastore.AllocateSpace — 为新 VM/CT 分配磁盘空间
    • Sys.Audit — 读取节点状态和任务
    • VM.Config.Disk — 调整磁盘大小
    • VM.Config.CPU — 更改 CPU 分配
    • VM.Config.Memory — 更改内存分配
    • VM.Monitor — 访问 QEMU 监视器(用于获取指标)
    • VM.Console — 控制台交互工具(屏幕截图、键盘输入)
    • VM.Migrate — 在节点间迁移 VM/CT
    • Sys.Modify — 管理防火墙规则
    • VM.Config.Cloudinit — 配置 cloud-init 参数

集成

Claude Desktop

添加到 ~/.claude/claude_desktop_config.json:

{
  "mcpServers": {
    "proxmox": {
      "command": "uvx",
      "args": ["mcp-proxmox"],
      "env": {
        "PROXMOX_HOST": "192.168.1.100",
        "PROXMOX_TOKEN_ID": "user@pam!mcp",
        "PROXMOX_TOKEN_SECRET": "your-token-secret"
      }
    }
  }
}
Claude Code

添加到 .claude/settings.json 或 ~/.claude/settings.json:

{
  "mcpServers": {
    "proxmox": {
      "command": "uvx",
      "args": ["mcp-proxmox"],
      "env": {
        "PROXMOX_HOST": "192.168.1.100",
        "PROXMOX_TOKEN_ID": "user@pam!mcp",
        "PROXMOX_TOKEN_SECRET": "your-token-secret"
      }
    }
  }
}
Cursor

在 Cursor Settings > MCP 中添加,配置与上述相同。

可用工具

发现
工具描述
list_nodes列出集群中的所有节点及其 CPU、内存和运行时间
get_node_status节点详细信息:CPU 型号、内存、磁盘、版本
list_vms列出 QEMU VM(按节点或状态筛选)
list_containers列出 LXC 容器(按节点或状态筛选)
get_guest_status按 VMID 获取 VM/CT 的详细状态(自动检测类型和节点)
生命周期
工具描述
start_guest启动已停止的 VM 或容器
stop_guest强制停止(需要确认)
shutdown_guest通过 ACPI/init 优雅关机
reboot_guest重启(需要确认)
存储
工具描述
list_storages列出存储池及其容量和使用情况(按节点筛选)
list_storage_content浏览 ISO、模板、备份和磁盘映像
配置资源
工具描述
create_vm创建 QEMU VM,可配置 CPU、内存、磁盘、ISO 和网络
create_container根据模板创建 LXC 容器
clone_guest克隆 VM 或 CT(完整克隆或链接克隆,支持跨节点操作)
delete_guest永久删除已停止的 VM 或 CT(需要确认)
备份与恢复
工具描述
list_backups列出备份文件(按节点、存储或 VMID 筛选)
create_backup创建 vzdump 备份(快照/挂起/停止模式,zstd/lzo/gzip)
restore_backup从备份文件恢复 VM 或 CT(需要确认)
命令执行
工具描述
exec_command通过 guest agent 在 QEMU VM 内运行命令

注意:exec_command 要求在 VM 内安装并运行 qemu-guest-agent。由于 Proxmox API 的限制,不支持 LXC 容器。

控制台交互
工具描述
vm_screenshot截取 QEMU VM 显示画面的 PNG 屏幕截图(登录提示、启动消息、安装程序、GUI)
vm_send_key向 VM 控制台发送按键或组合键(需要确认)
vm_send_text在 VM 控制台输入 ASCII 文本(US 布局;需要确认)

注意: 控制台工具无需 qemu-guest-agent,只需要 VM.Console 权限。vm_screenshot 会打开与 Proxmox Web UI 使用的相同 VNC WebSocket 隧道(基于 DES 的 VNC 身份验证,RFB 3.8),并使用纯标准库实现(自定义 WebSocket 客户端 + DES)。仅支持 QEMU VM。文本输入取决于键盘布局:vm_send_text 会将 ASCII 映射到 US 键盘布局(大写字母和符号使用 Shift 映射);发送键协议不支持非 ASCII 输入(例如西里尔字母)。

快照
工具描述
list_snapshots列出 VM/CT 的所有快照
create_snapshot创建新快照
rollback_snapshot回滚到某个快照(需要确认)
delete_snapshot删除快照(需要确认)
网络
工具描述
list_networks列出节点上的网桥、绑定接口和物理接口
调整大小
工具描述
resize_guest调整 VM 或容器的 CPU、内存和/或磁盘大小(需要确认)
监控
工具描述
get_guest_metrics随时间变化的 CPU、内存、网络和磁盘 I/O 指标
list_tasks节点上的近期任务(备份、迁移等)
防火墙
工具描述
list_firewall_rules列出 VM/CT、节点或集群的防火墙规则
add_firewall_rule添加防火墙规则(动作、方向、协议、端口、源/目标)
delete_firewall_rule按位置删除防火墙规则(需要确认)
迁移
工具描述
migrate_guest将 VM/CT 实时迁移或离线迁移到另一节点(需要确认)
模板与 Cloud-init
工具描述
list_templates列出所有可用于克隆的 VM 模板
create_template将已停止的 VM 转换为模板(需要确认,且不可逆)
configure_cloud_init为 VM 设置用户、密码、SSH 密钥、IP 配置和 DNS
安全

具有破坏性的操作(stop_guest、reboot_guest、rollback_snapshot、delete_snapshot、delete_guest、resize_guest、restore_backup、delete_firewall_rule、migrate_guest、create_template)都需要显式设置 confirm=true。首次调用会返回说明影响的警告;只有第二次调用并确认后,才会执行操作。

示例

连接后,你可以向 AI 助手提问:

  • “列出我的所有 VM 及其状态”
  • “VM 100 正在使用多少内存?”
  • “关闭容器 105”
  • “为 VM 200 创建一个名为 before-upgrade 的快照”
  • “显示 VM 100 过去一天的 CPU 使用情况”
  • “节点 pve 最近运行了哪些任务?”
  • “哪些 VM 已停止?”
  • “我有哪些存储池?它们的空间使用情况如何?”
  • “显示可用的 ISO 镜像”
  • “创建一个新的 Ubuntu VM,配置 4 个核心和 8GB RAM”
  • “将 VM 100 克隆为测试环境”
  • “从模板创建一个 Debian 容器”
  • “删除旧的测试 VM 999”
  • “将 VM 100 备份到 zfs-backup-storage”
  • “显示 VM 200 的所有备份”
  • “恢复容器 101 的最新备份”
  • “在 VM 100 上运行 df -h”
  • “检查 nginx 是否在 VM 200 上运行”
  • “为 VM 100 截一张屏幕截图,这样我就能看到控制台”
  • “VM 卡在登录提示符了——输入 root 并按 Enter”
  • “显示节点 pve 上的网络桥接”
  • “给 VM 100 增加 CPU——将其提升到 8 个核心”
  • “给容器 101 增加 50GB 磁盘空间”
  • “显示 VM 100 上的防火墙规则”
  • “允许容器 101 上的 TCP 端口 443”
  • “将 VM 200 迁移到节点 pve2”
  • “列出集群中的所有模板”
  • “将 VM 102 转换为模板”
  • “为 VM 100 设置 cloud-init:用户 admin、IP dhcp、DNS 8.8.8.8”

故障排除

Missing required environment variables

此错误表示服务器进程无法获取一个或多个必需的连接设置。将 .env.example 复制为 .env,然后设置 PROXMOX_HOST、PROXMOX_TOKEN_ID 和 PROXMOX_TOKEN_SECRET。如果直接配置 MCP 客户端,请确保相同的变量存在于该客户端的 env 块中。

403 Permission check failed

403 通常表示 API 令牌有效,但没有执行所请求操作所需的 Proxmox 权限。请重新查看 创建 Proxmox API 令牌,并取消选中“Privilege Separation”以获得完整访问权限,或分配其中列出的特定权限,例如 VM.Audit、VM.PowerMgmt、VM.Snapshot,或数据存储操作所需的存储权限。

exec_command 因 guest-agent 或 LXC 问题失败

exec_command 仅适用于已安装并运行 qemu-guest-agent 的 QEMU VM。如果工具报告 QEMU guest agent 无响应,请在 VM 中启动或安装该 Agent,然后重试。此 Proxmox API 路径不支持 LXC 容器,因此请改用其他容器访问方式。

ModuleNotFoundError: No module named 'mcp.server.fastmcp'

MCP Python SDK 2.0 移除了 mcp-proxmox 1.2.1 及更早版本导入的 mcp.server.fastmcp 模块。全新安装(uvx mcp-proxmox、uv tool install、pip install)会解析到 mcp 2.x,并在启动时失败——在 Claude Desktop 中,这只会显示为“Server disconnected”。请升级到 mcp-proxmox 1.2.2 或更高版本,该版本将 mcp 固定为 <2。如果必须继续使用较旧的 mcp-proxmox,请自行限制 SDK 版本:uvx --with "mcp<2" mcp-proxmox。

自签名证书或连接错误

Proxmox 通常使用端口 8006,因此请检查 PROXMOX_HOST 和 PROXMOX_PORT 是否指向与 Proxmox Web 界面相同的端点。对于使用自签名证书的家庭实验室集群,请将 PROXMOX_VERIFY_SSL=false 保持不变或显式设置。只有在 Proxmox 证书链最终连接到运行环境信任的 CA 时,才使用 PROXMOX_VERIFY_SSL=true。

开发

git clone https://github.com/antonio-mello-ai/mcp-proxmox.git
cd mcp-proxmox
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"

# Run tests
pytest

# Lint
ruff check src/ tests/
ruff format src/ tests/

# Type check
mypy src/

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。