使用说明
Proxmox MCP
Proxmox-MCP 是一种类型化的MCP服务器,用于通过三层一起使用来操作Proxmox VE:
- 用于管理平面的Proxmox REST
- Proxmox CLI通过SSH解决节点本地覆盖缺口
- 为高风险的主机和客户机操作提供明确的shell和文件逃逸口
服务器是根据中提供的官方Proxmox API架构构建的 vendor/pve-docs.
该框架通过经过验证的域模块进行扩展。只有在实验室中进行端到端操作后,工作流程才会成为一种类型化的MCP工具。在验证之前,所有其他工具都可以通过通用的API/CLI/shell/file escape填充使用。
模块覆盖率的维护模式衍生路线图存在于 模块库存.md.
这是什么/不是什么
这是什么:
- 一个真正的MCP服务器,带有由官方上游文档和模式支持的类型化Proxmox工具
- 一个与客户端无关的控制界面,目前在stdio上工作,目标是使用OIDC进行远程HTTP部署
- 一个以操作员为中心的服务器,它保持高风险的shell、文件和访客访问的明确性,而不是将其隐藏在模糊的工作流包装后面
这不是什么:
- 围绕即席本地脚本的精简包装
- 一个完全打包的生产平台,包含发布工件、托管文档和长期兼容性保证,已经锁定
- 无策略的远程shell代理;高风险访问保持谨慎和可审计
项目状态
Proxmox-MCP 目前 Beta.
- 本地
stdio验证已到位,是主要的维护工作流程 http + oidc + file|vault是预期的生产部署形状- 发布打包、更广泛的部署验证和更深入的运营成熟度仍在进行中
看 生产就绪 对于当前的支持边界和剩余差距。
社区/维护者文档
当前范围
- 跨集群、节点、QEMU VM和LXC容器的库存
- Proxmox生命周期、存储、网络、防火墙、备份、Ceph、SDN、用户、任务和控制台操作
- 低级QEMU配置和模板原语以及云初始化代码片段工具
- VM引导诊断
- 一种用于无状态节点命令的便利节点终端运行器
- 用于大型文本和二进制工具输出的工件/资源层
- 通过验证原始REST访问
proxmox_api_call - 通过验证Proxmox CLI访问
proxmox_cli_run - 通过显式shell和文件访问
proxmox_shell_run,proxmox_file_read,以及proxmox_file_write - 服务器拥有的用于长时间运行的作业
此仓库是一个真正的MCP服务器,而不是围绕本地脚本集合的包装器。
刀具表面
类型化工具:
这些是有意的低级通用Proxmox原语。该框架旨在公开MCP形状的Proxmox API表面,而不是预先构建的操作员工作流目录。
proxmox_inventory_overviewproxmox_cluster_statusproxmox_pci_mapping_list,proxmox_pci_mapping_get,proxmox_pci_mapping_create,proxmox_pci_mapping_update,proxmox_pci_mapping_deleteproxmox_node_list,proxmox_node_get,proxmox_node_actionproxmox_node_terminal_runproxmox_vm_list,proxmox_vm_get,proxmox_vm_guest_agent_diagnose,proxmox_vm_action,proxmox_vm_agent_ping,proxmox_vm_agent_info,proxmox_vm_guest_execproxmox_vm_boot_diagnoseproxmox_vm_template_list,proxmox_vm_template_getproxmox_storage_download_urlproxmox_vm_create,proxmox_vm_update_config,proxmox_vm_pci_attach,proxmox_vm_pci_detach,proxmox_vm_convert_to_template,proxmox_vm_clone,proxmox_vm_destroyproxmox_cloud_init_snippet_list,proxmox_cloud_init_snippet_get,proxmox_cloud_init_snippet_put,proxmox_cloud_init_snippet_delete,proxmox_vm_cloud_init_dumpproxmox_lxc_list,proxmox_lxc_get,proxmox_lxc_actionproxmox_storage_list,proxmox_storage_getproxmox_network_listproxmox_firewall_getproxmox_backup_jobs,proxmox_backup_startproxmox_user_listproxmox_ceph_statusproxmox_sdn_listproxmox_task_list,proxmox_task_getproxmox_console_ticket
完整性和逃生口:
proxmox_api_callproxmox_cli_runproxmox_shell_runproxmox_file_readproxmox_file_writeproxmox_bootstrap_node_accessproxmox_capabilitiesjob_get,job_wait,job_cancel,job_logs
一些工具现在将大文本或二进制输出作为MCP工件资源发布,而不是强制将所有内容内联到单个JSON响应中。这些文物暴露在 proxmox://artifacts/{artifactId}.
作业耐久性边界:
- UPID支持的工作可以通过以下方式重新水合
job_get,job_wait,job_cancel,以及job_logs因为Proxmox保留了底层任务 - 典型的例子是VM生命周期/配置突变、存储下载url作业、备份和其他返回Proxmox UPID的类型化REST突变
- 进程运行执行路径,例如
proxmox_cli_run,proxmox_shell_run,proxmox_node_terminal_run,以及proxmox_vm_guest_exec延迟时保持流程本地 - 此服务器不创建自己的持久本地作业数据库;仅在Proxmox已经拥有跨会话耐久性的情况下才提供跨会话持久性
在中跟踪了新VM诊断工具背后经过验证的引导/引导结果 靴子和鞋带.md.
配置
运行时启动表面仅为env。在实践中,这意味着您的MCP客户端配置或进程管理器环境是事实的来源。
支持的部署模式:
stdio- 本地维护人员工作流程
- 可能仅对一次性环境使用显式本地引导
http- 远程MCP部署
- 需要OIDC承载身份验证
both- 在一个进程中运行stdio和HTTP进行转换/测试
核心环境设置:
PROXMOX_HOSTPROXMOX_MCP_MODE=stdio|http|bothPROXMOX_MCP_AUTH_MODE=none|oidcPROXMOX_MCP_SECRET_BACKEND=env|file|vaultPROXMOX_API_PORTPROXMOX_DEFAULT_NODEPROXMOX_DEFAULT_BRIDGEPROXMOX_DEFAULT_VM_STORAGEPROXMOX_DEFAULT_SNIPPET_STORAGEPROXMOX_TLS_REJECT_UNAUTHORIZED
稳态运行时秘密:
- 环境后端:
PROXMOX_API_TOKEN_USERPROXMOX_API_TOKEN_REALMPROXMOX_API_TOKEN_IDPROXMOX_API_TOKEN_SECRETPROXMOX_SHELL_SSH_USERNAMEPROXMOX_SHELL_SSH_PRIVATE_KEY或PROXMOX_SHELL_SSH_PRIVATE_KEY_PATHPROXMOX_SHELL_SSH_EXPECTED_HOST_KEY
- 文件后端:
PROXMOX_MCP_SECRET_FILE_PATH
- vault后端:
PROXMOX_MCP_SECRET_VAULT_ADDRPROXMOX_MCP_SECRET_VAULT_PATHPROXMOX_MCP_SECRET_VAULT_TOKEN_ENV或VAULT_TOKEN
HTTP/OIDC设置:
PROXMOX_MCP_HTTP_HOSTPROXMOX_MCP_HTTP_PORTPROXMOX_MCP_HTTP_PATHPROXMOX_MCP_HTTP_PUBLIC_BASE_URLPROXMOX_MCP_OIDC_ISSUERPROXMOX_MCP_OIDC_AUDIENCEPROXMOX_MCP_OIDC_JWKS_URL
仅适用于开发人员的本地引导程序:
PROXMOX_MCP_LOCAL_BOOTSTRAP=1PROXMOX_BOOTSTRAP_SSH_USERNAME/PROXMOX_SSH_USERNAMEPROXMOX_BOOTSTRAP_SSH_PASSWORD/PROXMOX_SSH_PASSWORD
引导路径被有意限制为显式的本地stdio模式。它不是生产运行时模型。
Codex/MCP客户端设置
服务器仍然通过stdio工作。它从应用程序位置而不是当前工作目录解析供应商模式和应用程序相对默认值,因此客户端不需要设置 cwd 如果它通过绝对路径启动构建的入口点。
最小稳态stdio模式:
[mcp_servers.proxmox-mcp]
command = "C:\\Program Files\\nodejs\\node.exe"
args = ["C:\\path\\to\\Proxmox-MCP\\dist\\index.js"]
enabled = true
startup_timeout_sec = 30
tool_timeout_sec = 300
[mcp_servers.proxmox-mcp.env]
PROXMOX_HOST = "proxmox.example.internal"
PROXMOX_MCP_MODE = "stdio"
PROXMOX_MCP_AUTH_MODE = "none"
PROXMOX_MCP_SECRET_BACKEND = "env"
PROXMOX_API_TOKEN_USER = "proxmox-mcp"
PROXMOX_API_TOKEN_REALM = "pam"
PROXMOX_API_TOKEN_ID = "proxmox-mcp"
PROXMOX_API_TOKEN_SECRET = "replace-me"
PROXMOX_DEFAULT_NODE = "pve-example"
稳态路径的可选环境覆盖:
PROXMOX_API_PORTPROXMOX_DEFAULT_NODEPROXMOX_DEFAULT_BRIDGEPROXMOX_DEFAULT_VM_STORAGEPROXMOX_DEFAULT_SNIPPET_STORAGEPROXMOX_TLS_REJECT_UNAUTHORIZEDPROXMOX_SHELL_SSH_*如果要启用shell/CLI/文件转义填充
远程HTTP模式是生产目标。请参阅:
所有支持的启动覆盖都属于MCP客户端环境块或监督进程环境。没有旧版配置文件回退。
Proxmox配置
可重复的Proxmox配置现在属于MCP服务器,而不是存储库本地操作员包装器。
删除了旧的SSH繁重的配置脚本,因为它们复制了类型化的MCP表面,并偏离了当前仅支持env的启动模型。如果一个工作流是可重用的,并且面向Proxmox,那么预期的路径是通过MCP来执行它,并在需要时改进键入的工具。
经过验证的配置和模板原语是:
proxmox_storage_download_url- 使用记录的REST端点将图像或模板工件下载到Proxmox存储中
proxmox_vm_create- 从低级配置参数创建QEMU VM
proxmox_vm_update_config- 从低级配置参数(如磁盘、云初始化、串行控制台、气球或SSH密钥)更新QEMU VM配置
proxmox_vm_pci_attach- 首先使用REST通过类型化的QEMU配置界面连接原始主机PCI设备或集群PCI映射
qm set仅适用于已知的纯生根hostpci案例
- 首先使用REST通过类型化的QEMU配置界面连接原始主机PCI设备或集群PCI映射
proxmox_vm_pci_detach- 分离a
hostpci通过类型化的QEMU配置界面插入插槽,具有相同的显式REST优先传输行为
- 分离a
proxmox_vm_convert_to_template- 将现有VM转换为模板
proxmox_vm_clone- 使用低级克隆参数克隆VM或模板,例如
newid,full,storage,以及target
- 使用低级克隆参数克隆VM或模板,例如
proxmox_vm_destroy- 通过记录的REST端点销毁VM或模板
proxmox_cloud_init_snippet_*- 在支持Proxmox代码段的存储上管理代码段文件
proxmox_vm_cloud_init_dump- 生成的转储
user,network,或meta用于调试的云初始化
- 生成的转储
重要区别:
- 模板引导属于存储在Proxmox代码段存储器上的云初始化代码段内容
- 特定于操作员的克隆定制属于低级VM配置和云初始化输入,而不是存储库本地包装器脚本
proxmox_node_terminal_run是无状态节点命令的便利工具,而proxmox_shell_run仍然是通用的高风险弹壳逃生口
对于这些工作流的实时验证,请使用中的直接stdio线束 docs/direct-mcp-testing.md.
此仓库中唯一有意保留的独立脚本是主机本地维护者助手,例如:
- Hyper-V外部实验室创建/删除
- 供应商文档刷新和摘要生成
这些位于MCP产品表面之外,因为它们在维护人员工作站或仓库维护输入上运行,而不是通过服务器在托管的Proxmox资源上运行。
发展
分支和推广流程:
main是准备生产的分支机构吗dev是集成和预发布分支- 正常的工作应该从
dev变成短命feature/*分支,然后合并回dev - 发布推广应该通过合并来实现
dev进入main - 紧急修复可能针对
main通过hotfix/*分支,但必须重新合并到dev - 两个分支都有分支保护,但所有者/管理员旁路仍可用于紧急情况
看 分支工作流程 对于维护者流程。
npm install
npm run check
npm run test
npm run build
在stdio模式下本地运行服务器:
npm run dev
运行管理CLI:
npm run admin -- status --secret-backend env
运行构建的入口点:
node C:\path\to\Proxmox-MCP\dist\index.js
实时集成测试是环境门控的:
$env:ENABLE_LIVE_PROXMOX_TESTS="1"
npm run test:live
回购布局
src/:服务器、配置加载程序、策略实施、API客户端、SSH/WinRM传输和面向域的MCP工具注册src/tools/:MCP工具注册按Proxmox域分组,每个注册都有一个本地维护者READMEtests/:单元和现场测试覆盖率docs/proxmox/:来自官方Proxmox文档的本地注释vendor/pve-docs/:vendored上游Proxmox文档和API架构scripts/:用于文档刷新和外部实验室主机设置的可复制助手脚本docs/framework-architecture.md:框架层和验证模块规则的维护者指南docs/direct-mcp-testing.md:直接stdio MCP验证的维护人员指南,无需依赖编辑器MCP重新加载
文档
docs/proxmox/README.mddocs/proxmox/api-programming-guide.mddocs/proxmox/command-map.mddocs/proxmox/api-summary.jsondocs/proxmox/module-inventory.mddocs/proxmox/module-inventory.jsondocs/direct-mcp-testing.mddocs/branching.mddocs/production-readiness.mddocs/getting-started.mddocs/deployment.mddocs/security.mddocs/operations.md
项目卫生
公共仓库应包含可复制的代码和文档,而不是实时配置、审计日志、生成的构建输出、ISO文件或本地密钥。如果您正在准备发布,请验证启动说明是否仍指向MCP客户端 config.toml 仅限于环境配置。
