cv4pve-api-powershell skill
A PowerShell module and skill for Claude Code and Codex: the agent finds, starts and snapshots Proxmox VE VMs via the API.
- 95 ★ on the repository
- Last commit
- MIT
Broad access
Why this level
- Cmdlets start, stop, clone and delete virtual machines with the token privileges.
- A Proxmox VE API token opens cluster control and is kept in an environment variable.
Install
- Works in
In your terminal, with SkillFoxx CLI
npx skillfoxx add skills/cv4pve-api-powershellDetects the agents on your machine, shows the access level and pins the version.
Other ways to install
Access and checks
How we reviewBroad accessThe tool can change data, run commands or handle secrets.
- Cmdlets start, stop, clone and delete virtual machines with the token privileges.
- A Proxmox VE API token opens cluster control and is kept in an environment variable.
This is third-party code. Review the repository files before installing.
What it does
Corsinvest.ProxmoxVE.Api is a PowerShell 7 module with one cmdlet per Proxmox VE API method. It runs on your machine and talks only to the API, with no SSH and nothing installed on the nodes. Next to it sits the `cv4pve-api-powershell` skill for agents. The skill teaches the agent to connect with a token, find a cmdlet by API path (`GET /nodes/{node}/qemu/{vmid}/config` becomes `Get-PveNodesQemuConfig`) and read the responses. Before any change the agent runs the command with `-WhatIf`, shows the result and acts only after you agree. `Invoke-PveRestApi` calls any path.
Who it is for. Proxmox VE administrators who want to hand cluster inventory, snapshots and bulk virtual machine operations to an agent.
Good fit when
- Forty machines should be snapshotted by tag before an update.
- An audit needs a list of every VM with its disks exported to CSV.
- A template has to be cloned ten times under different names.
- A lab stand is shut down each evening and the action is worth automating.
Not a fit when
- You need actions on the nodes over SSH: the module works through the API only.
- PowerShell 7 is unavailable: the module is not meant for Windows PowerShell 5.
- You need an MCP server: this repository holds a module and a skill.
Example request
List all virtual machines tagged test and, if that looks right, snapshot them with -WhatIf first and then for real on my command.Limitations
PowerShell 7 (`pwsh`) and a Proxmox VE API token are required; the key reaches the agent through the `PVE_API_TOKEN` variable and must not be printed. Every change goes to the cluster at once with the token privileges. `Invoke-PveRestApi` has no `-WhatIf`, so the agent shows method, path and parameters before calling. A failed call does not throw: the result is checked via `IsSuccessStatusCode`. The skill can be newer than the installed module: check the version with `(Get-Module Corsinvest.ProxmoxVE.Api -ListAvailable).Version`.
How to disable. Remove the skill from the agent directory and the module with `Uninstall-Module Corsinvest.ProxmoxVE.Api`. Revoke the token in the Proxmox VE interface.
FAQ
How do I install the module?
In `pwsh` run `Install-Module -Name Corsinvest.ProxmoxVE.Api -Scope CurrentUser`. It talks only to the Proxmox VE API.
Does the agent confirm changes?
Yes. The skill requires running a changing command with `-WhatIf`, showing the `What if:` lines and executing the call after the user agrees.
How does the agent connect to the cluster?
Every command starts with `Connect-PveCluster -HostsAndPorts <host> -ApiToken $env:PVE_API_TOKEN`: the agent shell keeps no connection between calls.
How do I find the cmdlet for an API path?
Run `Get-Command -Module Corsinvest.ProxmoxVE.Api -Name *Qemu*Snapshot*`, then `Get-Help <cmdlet> -Full`.
What if the cluster uses a self-signed certificate?
Add `-SkipCertificateCheck` to `Connect-PveCluster`. The skill reminds the agent about it.
Discussion
No questions or reviews yet.
Related
SkillsMCP server for Proxmox VE: manage VMs, LXC, snapshots and backups from an agent with permission control and command approval
A Proxmox VE MCP server with 341 tools: virtual machines, containers, storage, cluster and backups, with a read-only mode.
An MCP server for Proxmox VE, Backup Server, Mail Gateway and Datacenter Manager: plan before action, a change ledger and undo
MCP server giving an agent a PowerShell 7 console shared with the user: commands appear live, passwords and MFA codes stay manual.
devvm gives each project its own virtual machine with the right toolchains, where Claude Code and Codex cannot see your secrets
A WebSSH console for VPS with an MCP server: the agent works across several servers while ACL tokens limit tools and hosts.
Comparison with similar tools
Cards that share the main search query, and how they differ.
| Tool | Official | Authentication | Repository stars | Main difference |
|---|---|---|---|---|
| cv4pve-api-powershell (this card) | no | 95 | ||
| Proxmox MCP Server | no | API key | 81 | an MCP server for Proxmox; this is a PowerShell module and a skill that work from an ordinary shell |
| ProxmoxMCP-Plus | no | key is optional | 649 | an MCP server with extended operations; here there are cmdlets for every API method |
README in short
The idea is PowerCLI for Proxmox VE: the whole API as cmdlets, objects in the pipeline, `-WhatIf` and `-Confirm` on changing commands. The docs have a separate page for agents covering Claude Code and Codex.
README badge
Original SKILL.md
---
name: cv4pve-api-powershell
description: "Read and operate a Proxmox VE cluster from PowerShell 7 with the Corsinvest.ProxmoxVE.Api module: list and find VMs, containers and nodes, read configurations, start, stop, snapshot, and call any API endpoint. Use it when the user works in PowerShell or asks for a PowerShell script for Proxmox VE."
---
# cv4pve-api-powershell
The PowerShell module `Corsinvest.ProxmoxVE.Api` has one cmdlet per Proxmox VE API endpoint plus a few
functions for guests and tasks. It needs PowerShell 7 (`pwsh`). Every change goes to the cluster at once,
with the privileges of the token.
## Rules
- Your shell does not keep the connection between commands: start every command with
`Connect-PveCluster -HostsAndPorts <host> -ApiToken $env:PVE_API_TOKEN`, adding `-SkipCertificateCheck`
if the nodes have a self-signed certificate. Ask the user for the host; never print the variable.
- Never call `Connect-PveCluster` without `-ApiToken` or `-Credentials`: it waits for `Get-Credential`.
Do not use `Out-GridView` or `.ToGridView()` either.
- Reads need no agreement. Before any `New-`, `Set-`, `Remove-` cmdlet or guest function that changes
something (`Start-`, `Stop-`, `Restart-`, `Reset-`, `Suspend-`, `Resume-PveGuest`, `New-`, `Remove-`,
`Undo-PveGuestSnapshot`, `Unlock-PveGuest`): run the same command with `-WhatIf`, show the user its
`What if:` lines, and run it for real only after the user agrees.
- `Invoke-PveRestApi` has no `-WhatIf`: before a call with `-Method Set`, `Create` or `Delete`, show the
method, the path and the parameters and wait for agreement.
- A failed call does not throw: check `IsSuccessStatusCode` of every response; `StatusCode` and
`ReasonPhrase` say why (400 parameter, 401 token, 403 privilege, 500 server, -1 no answer).
- If a parameter is refused, read `Get-Help <cmdlet> -Full`: this skill can be newer than the module
(`(Get-Module Corsinvest.ProxmoxVE.Api -ListAvailable).Version`).
## Find the cmdlet
Generated cmdlets follow the API path: `GET /nodes/{node}/qemu/{vmid}/config` is `Get-PveNodesQemuConfig`,
`POST /nodes/{node}/qemu/{vmid}/snapshot` is `New-PveNodesQemuSnapshot`, `PUT` is `Set-`, `DELETE` is
`Remove-`.
```powershell
Get-Command -Module Corsinvest.ProxmoxVE.Api -Name *Qemu*Snapshot* # cmdlets about QEMU snapshots
Get-Help New-PveNodesQemuSnapshot -Full # parameters
```
## Read
```powershell
Get-PveGuest | Select-Object vmid, name, node, type, status # every VM and container
Get-PveGuest -VmIdOrName '@tag-prod,-@node-pve03' # a selection, as in the other cv4pve tools
Get-PveNode
(Get-PveGuest -VmIdOrName 100 | Get-PveNodesQemuConfig).Response.data
```