# Proxmox VE

An MCP server that lets your agent see Proxmox VE nodes, virtual machines, containers, storage and snapshots. Read-only unless you raise the risk level.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 5
- Author: akmalovaa
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/akmalovaa/proxmox-mcp
- Updated: 2026-10-01
- HTML: https://affpapa.org/en/nevibecode/mcp/proxmox-ve

## What it does

Fifty tools cover nodes, QEMU guests, LXC containers, storage, the cluster and snapshots. The default level is `read`, which registers 32 tools and none of them change anything. Destructive calls sit behind `PROXMOX_RISK_LEVEL`: `lifecycle` brings in start, stop, reboot, clone, migrate and snapshot creation, while `all` adds snapshot deletion and rollback. Anything above the active level is never registered, so it does not show up in your client's tool list at all.

Configuration is environment variables only — no config file, no database, no saved state. You need `PROXMOX_HOST` plus either the `PROXMOX_TOKEN_NAME` / `PROXMOX_TOKEN_VALUE` pair or `PROXMOX_PASSWORD`. Set just one half of the token pair and the server refuses to start; it will not quietly fall back to the password. Transport is stdio or Streamable HTTP, one variable apart, and HTTP binds to loopback. The image `ghcr.io/akmalovaa/proxmox-mcp:latest` ships for `amd64` and `arm64`.

Give the token real permissions or some calls come back as 403. `PVEAuditor` is enough for all 32 read tools; `PVEVMAdmin` on `/vms` unlocks guest lifecycle and snapshots. Migration also wants `VM.Migrate` on the destination node, and cloning wants `Datastore.AllocateSpace` on the destination storage. A dedicated user with its own token beats `root@pam` here, since the server answers to a model reading text it did not write.

## Requirements
- Needs: Python and uv (commands run via uvx)
- Environment variables: `PROXMOX_HOST`, `PROXMOX_PORT`, `PROXMOX_VERIFY_SSL`, `PROXMOX_TIMEOUT`, `PROXMOX_USER`, `PROXMOX_TOKEN_NAME`, `PROXMOX_TOKEN_VALUE`, `PROXMOX_PASSWORD`, `PROXMOX_RISK_LEVEL`, `PROXMOX_TOOLS_ALLOW` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add --env PROXMOX_HOST=<PROXMOX_HOST> --env PROXMOX_PORT=<PROXMOX_PORT> --env PROXMOX_VERIFY_SSL=<PROXMOX_VERIFY_SSL> --env PROXMOX_TIMEOUT=<PROXMOX_TIMEOUT> --env PROXMOX_USER=<PROXMOX_USER> --transport stdio proxmox-ve -- uvx proxmox-ve-mcp
```
Replace <…> with your own values. 14 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from proxmox-ve-mcp <command>

### Codex

**Platform CLI**
```bash
codex mcp add proxmox-ve --env PROXMOX_HOST=<PROXMOX_HOST> --env PROXMOX_PORT=<PROXMOX_PORT> --env PROXMOX_VERIFY_SSL=<PROXMOX_VERIFY_SSL> --env PROXMOX_TIMEOUT=<PROXMOX_TIMEOUT> --env PROXMOX_USER=<PROXMOX_USER> -- uvx proxmox-ve-mcp
```
Replace <…> with your own values. 14 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from proxmox-ve-mcp <command>

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "proxmox-ve": {
            "command": "uvx",
            "args": [
                "proxmox-ve-mcp"
            ],
            "env": {
                "PROXMOX_HOST": "<PROXMOX_HOST>",
                "PROXMOX_PORT": "<PROXMOX_PORT>",
                "PROXMOX_VERIFY_SSL": "<PROXMOX_VERIFY_SSL>",
                "PROXMOX_TIMEOUT": "<PROXMOX_TIMEOUT>",
                "PROXMOX_USER": "<PROXMOX_USER>"
            }
        }
    }
}
```
Replace <…> with your own values. 14 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from proxmox-ve-mcp <command>

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "proxmox-ve": {
            "type": "stdio",
            "command": "uvx",
            "args": [
                "proxmox-ve-mcp"
            ],
            "env": {
                "PROXMOX_HOST": "<PROXMOX_HOST>",
                "PROXMOX_PORT": "<PROXMOX_PORT>",
                "PROXMOX_VERIFY_SSL": "<PROXMOX_VERIFY_SSL>",
                "PROXMOX_TIMEOUT": "<PROXMOX_TIMEOUT>",
                "PROXMOX_USER": "<PROXMOX_USER>"
            }
        }
    }
}
```
Replace <…> with your own values. 14 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from proxmox-ve-mcp <command>

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e PROXMOX_HOST=<PROXMOX_HOST> -e PROXMOX_PORT=<PROXMOX_PORT> -e PROXMOX_VERIFY_SSL=<PROXMOX_VERIFY_SSL> -e PROXMOX_TIMEOUT=<PROXMOX_TIMEOUT> -e PROXMOX_USER=<PROXMOX_USER> proxmox-ve uvx proxmox-ve-mcp
```
Replace <…> with your own values. 14 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from proxmox-ve-mcp <command>

## When to use it
- list cluster nodes and their current state from chat
- start or stop one specific virtual machine
- take a snapshot before a risky change
- check how much space is left on a datastore
- find a container by name and read its config

## Example prompts
- List all Proxmox nodes and their load
- Stop the VM with ID 101
- Snapshot container `web-01` before the upgrade

## Similar
- [Proxmox MCP is an opinionated MCP server](https://affpapa.org/en/nevibecode/mcp/proxmox-mcp-is-an-opinionated-mcp-server.md) — MCP server · ★ 5
- [proxmox-admin](https://affpapa.org/en/nevibecode/skills/proxmox-admin.md) — skill · 828 installs
- [Proximo — the Proxmox MCP you can hand the keys](https://affpapa.org/en/nevibecode/mcp/proximo-the-proxmox-mcp-you-can-hand-the-keys.md) — MCP server · ★ 61
- [mcp-proxmox](https://affpapa.org/en/nevibecode/mcp/mcp-proxmox.md) — MCP server · ★ 17
- [Proxmox MCP](https://affpapa.org/en/nevibecode/mcp/proxmox-mcp.md) — MCP server · ★ 63
- [ProxmoxMCP-Plus](https://affpapa.org/en/nevibecode/mcp/proxmoxmcp-plus.md) — MCP server · ★ 620

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
