MCP PVE MCP Server

1

Add it to Claude Code

Run this in a terminal.

Run in terminal
claude mcp add -e "PVE_BASE_URL=${PVE_BASE_URL}" -e "PVE_TOKEN_ID=${PVE_TOKEN_ID}" -e "PVE_TOKEN_SECRET=${PVE_TOKEN_SECRET}" mcp-pve -- npx -y @samik081/mcp-pve
Required:PVE_BASE_URLPVE_TOKEN_IDPVE_TOKEN_SECRET+ 2 optional
README.md

Manage Proxmox VE clusters, virtual machines, and containers via natural language

MCP PVE

MCP server for Proxmox VE. Manage virtual machines, containers, storage, networking, and clusters through natural language in Cursor, Claude Code, and Claude Desktop.

Features

  • 105 tools across 12 categories covering the Proxmox VE REST API
  • Three access tiers (read-only, read-execute, full) for granular control
  • Category filtering via PVE_CATEGORIES to expose only the tools you need
  • Zero HTTP dependencies -- uses native fetch (Node 18+)
  • Self-signed cert support via PVE_VERIFY_SSL=false
  • Docker images for linux/amd64 and linux/arm64 on GHCR
  • Remote MCP via HTTP transport (MCP_TRANSPORT=http) using the Streamable HTTP protocol
  • TypeScript/ESM with full type safety

Quick Start

Run the server directly with npx:

PVE_BASE_URL="https://pve.example.com:8006" \
PVE_TOKEN_ID="root@pam!mcp" \
PVE_TOKEN_SECRET="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" \
npx -y @samik081/mcp-pve

The server validates your PVE connection on startup and fails immediately with a clear error if credentials are missing or invalid.

Docker

Run with Docker (stdio transport, same as npx):

docker run --rm -i \
  -e PVE_BASE_URL=https://pve.example.com:8006 \
  -e PVE_TOKEN_ID=root@pam!mcp \
  -e PVE_TOKEN_SECRET=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
  -e PVE_VERIFY_SSL=false \
  ghcr.io/samik081/mcp-pve

To run as a remote MCP server with HTTP transport:

docker run -d -p 3000:3000 \
  -e MCP_TRANSPORT=http \
  -e PVE_BASE_URL=https://pve.example.com:8006 \
  -e PVE_TOKEN_ID=root@pam!mcp \
  -e PVE_TOKEN_SECRET=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
  -e PVE_VERIFY_SSL=false \
  ghcr.io/samik081/mcp-pve

The MCP endpoint is available at http://localhost:3000 and a health check at http://localhost:3000/health.

Configuration

Claude Code CLI (recommended):

# Using npx
claude mcp add --transport stdio pve \
  --env PVE_BASE_URL=https://pve.example.com:8006 \
  --env PVE_TOKEN_ID=root@pam!mcp \
  --env PVE_TOKEN_SECRET=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
  --env PVE_VERIFY_SSL=false \
  -- npx -y @samik081/mcp-pve

# Using Docker
claude mcp add --transport stdio pve \
  --env PVE_BASE_URL=https://pve.example.com:8006 \
  --env PVE_TOKEN_ID=root@pam!mcp \
  --env PVE_TOKEN_SECRET=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx \
  --env PVE_VERIFY_SSL=false \
  -- docker run --rm -i ghcr.io/samik081/mcp-pve

# Using remote HTTP (connect to a running Docker container or HTTP server)
claude mcp add --transport http pve http://localhost:3000

JSON config (works with Claude Code .mcp.json, Claude Desktop claude_desktop_config.json, Cursor .cursor/mcp.json):

{
  "mcpServers": {
    "pve": {
      "command": "npx",
      "args": ["-y", "@samik081/mcp-pve"],
      "env": {
        "PVE_BASE_URL": "https://pve.example.com:8006",
        "PVE_TOKEN_ID": "root@pam!mcp",
        "PVE_TOKEN_SECRET": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "PVE_VERIFY_SSL": "false"
      }
    }
  }
}

Docker (stdio):

{
  "mcpServers": {
    "pve": {
      "command": "docker",
      "args": ["run", "--rm", "-i",
        "-e", "PVE_BASE_URL=https://pve.example.com:8006",
        "-e", "PVE_TOKEN_ID=root@pam!mcp",
        "-e", "PVE_TOKEN_SECRET=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
        "-e", "PVE_VERIFY_SSL=false",
        "ghcr.io/samik081/mcp-pve"
      ]
    }
  }
}

Remote MCP (connect to a running Docker container or HTTP server):

{
  "mcpServers": {
    "pve": {
      "type": "streamable-http",
      "url": "http://localhost:3000"
    }
  }
}

Access Tiers

Control which tools are available using the PVE_ACCESS_TIER environment variable:

Tier Tools Description
full (default) 105 Read, execute, and write -- full control
read-execute 68 Read and execute -- no resource creation/deletion
read-only 51 Read only -- safe for exploration, no state changes

Tier details:

  • full: All 105 tools. Includes creating/deleting VMs, containers, storage, users, firewall rules, and more.
  • read-execute: 68 tools. All read tools plus power actions (start, stop, migrate), backup execution, and task management.
  • read-only: 51 tools. List, get, status, and log tools only. No state changes.

Tools that are not available in your tier are not registered with the MCP

Tools (1)

pve_toolsProvides 105 tools across 12 categories covering the Proxmox VE REST API for managing VMs, containers, storage, and clusters.

Environment Variables

PVE_BASE_URLrequiredThe base URL of the Proxmox VE API
PVE_TOKEN_IDrequiredThe Proxmox API Token ID
PVE_TOKEN_SECRETrequiredThe Proxmox API Token Secret
PVE_VERIFY_SSLSet to false to allow self-signed certificates
PVE_ACCESS_TIERControls tool availability (full, read-execute, read-only)

Configuration

claude_desktop_config.json
{"mcpServers": {"pve": {"command": "npx", "args": ["-y", "@samik081/mcp-pve"], "env": {"PVE_BASE_URL": "https://pve.example.com:8006", "PVE_TOKEN_ID": "root@pam!mcp", "PVE_TOKEN_SECRET": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "PVE_VERIFY_SSL": "false"}}}}

Try it

List all virtual machines currently running on my Proxmox cluster.
Stop the container with ID 102 and provide the status update.
Migrate VM 105 to the node named pve-node-02.
Check the resource usage and logs for the cluster node pve-node-01.

Frequently Asked Questions

What are the key features of MCP PVE?

105 tools covering the full Proxmox VE REST API. Three granular access tiers: full, read-execute, and read-only. Supports both stdio and remote HTTP transport protocols. Zero HTTP dependencies using native Node.js fetch. Docker images available for linux/amd64 and linux/arm64.

What can I use MCP PVE for?

Automating VM power management and migration tasks via natural language. Monitoring cluster resource health and logs through an AI assistant. Safely exploring Proxmox infrastructure using the read-only access tier. Executing complex infrastructure operations without manual API calls.

How do I install MCP PVE?

Install MCP PVE by running: npx -y @samik081/mcp-pve

What MCP clients work with MCP PVE?

MCP PVE works with any MCP-compatible client including Claude Desktop, Claude Code, Cursor, and other editors with MCP support.

Turn this server into reusable context

Keep MCP PVE docs, env vars, and workflow notes in Conare so your agent carries them across sessions.

Need the old visual installer? Open Conare IDE.
Open Conare