Proxmox MCP Server
Provides tools to manage Proxmox VE and Proxmox Datacenter Manager, enabling operations on nodes, VMs, containers, storage, and more via their API.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Proxmox MCP Server list all VMs on node pve1"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Proxmox MCP Server
An MCP (Model Context Protocol) server for Proxmox VE and Proxmox Datacenter Manager, connecting your virtualization infrastructure to AI tools.
Quick start
Claude
bash (macOS/Linux):
PVE_HOST="pve.example.com"
PVE_TOKEN_ID='root@pam!mcp'
PVE_TOKEN_SECRET="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
PVE_TLS_REJECT_UNAUTHORIZED="false"
claude mcp add proxmox \
--env PVE_HOST="$PVE_HOST" \
--env PVE_TOKEN_ID="$PVE_TOKEN_ID" \
--env PVE_TOKEN_SECRET="$PVE_TOKEN_SECRET" \
--env PVE_TLS_REJECT_UNAUTHORIZED="$PVE_TLS_REJECT_UNAUTHORIZED" \
-- npx -y @nightsquawktech/proxmox-mcp-serverPowerShell (Windows):
$PVE_HOST = "pve.example.com"
$PVE_TOKEN_ID = "root@pam!mcp"
$PVE_TOKEN_SECRET = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
$PVE_TLS_REJECT_UNAUTHORIZED = "false"
claude mcp add proxmox `
--env "PVE_HOST=$PVE_HOST" `
--env "PVE_TOKEN_ID=$PVE_TOKEN_ID" `
--env "PVE_TOKEN_SECRET=$PVE_TOKEN_SECRET" `
--env "PVE_TLS_REJECT_UNAUTHORIZED=$PVE_TLS_REJECT_UNAUTHORIZED" `
-- npx -y @nightsquawktech/proxmox-mcp-serverThese examples configure the PVE surface. To also connect a Proxmox Datacenter Manager instance, add the PDM_* equivalents (full variable list in mcp.json).
Cursor
Or put the mcp.json block in .cursor/mcp.json, then verify with:
agent mcp list(The Cursor CLI manages configured servers but has no mcp add; install is via the button or mcp.json.)
VS Code
bash (macOS/Linux):
PVE_HOST="pve.example.com"
PVE_TOKEN_ID='root@pam!mcp'
PVE_TOKEN_SECRET="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
PVE_TLS_REJECT_UNAUTHORIZED="false"
code --add-mcp '{"name":"proxmox","command":"npx","args":["-y","@nightsquawktech/proxmox-mcp-server"],"env":{"PVE_HOST":"'"$PVE_HOST"'","PVE_TOKEN_ID":"'"$PVE_TOKEN_ID"'","PVE_TOKEN_SECRET":"'"$PVE_TOKEN_SECRET"'","PVE_TLS_REJECT_UNAUTHORIZED":"'"$PVE_TLS_REJECT_UNAUTHORIZED"'"}}'PowerShell (Windows):
$PVE_HOST = "pve.example.com"
$PVE_TOKEN_ID = "root@pam!mcp"
$PVE_TOKEN_SECRET = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
$PVE_TLS_REJECT_UNAUTHORIZED = "false"
$config = @{
name = "proxmox"
command = "npx"
args = @("-y", "@nightsquawktech/proxmox-mcp-server")
env = @{
PVE_HOST = $PVE_HOST
PVE_TOKEN_ID = $PVE_TOKEN_ID
PVE_TOKEN_SECRET = $PVE_TOKEN_SECRET
PVE_TLS_REJECT_UNAUTHORIZED = $PVE_TLS_REJECT_UNAUTHORIZED
}
} | ConvertTo-Json -Compress
code --add-mcp $configCodex
bash (macOS/Linux):
PVE_HOST="pve.example.com"
PVE_TOKEN_ID='root@pam!mcp'
PVE_TOKEN_SECRET="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
PVE_TLS_REJECT_UNAUTHORIZED="false"
codex mcp add proxmox \
--env PVE_HOST="$PVE_HOST" \
--env PVE_TOKEN_ID="$PVE_TOKEN_ID" \
--env PVE_TOKEN_SECRET="$PVE_TOKEN_SECRET" \
--env PVE_TLS_REJECT_UNAUTHORIZED="$PVE_TLS_REJECT_UNAUTHORIZED" \
-- npx -y @nightsquawktech/proxmox-mcp-serverPowerShell (Windows):
$PVE_HOST = "pve.example.com"
$PVE_TOKEN_ID = "root@pam!mcp"
$PVE_TOKEN_SECRET = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
$PVE_TLS_REJECT_UNAUTHORIZED = "false"
codex mcp add proxmox `
--env "PVE_HOST=$PVE_HOST" `
--env "PVE_TOKEN_ID=$PVE_TOKEN_ID" `
--env "PVE_TOKEN_SECRET=$PVE_TOKEN_SECRET" `
--env "PVE_TLS_REJECT_UNAUTHORIZED=$PVE_TLS_REJECT_UNAUTHORIZED" `
-- npx -y @nightsquawktech/proxmox-mcp-serverOr add it to ~/.codex/config.toml under [mcp_servers.proxmox].
mcp.json
Every environment variable the server reads, with recommended values. Both surfaces are optional: configure PVE, PDM, or both. Tools for an unconfigured surface error only at call time; the catalog still lists and describes every endpoint regardless.
{
"mcpServers": {
"proxmox": {
"command": "npx",
"args": ["-y", "@nightsquawktech/proxmox-mcp-server"],
"env": {
"PVE_HOST": "pve.example.com",
"PVE_BASE_URL": "https://pve.example.com:8006/api2/json",
"PVE_TOKEN_ID": "root@pam!mcp",
"PVE_TOKEN_SECRET": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"PVE_AUTH_SCHEME": "PVEAPIToken",
"PVE_AUTH_SEP": "=",
"PVE_TLS_REJECT_UNAUTHORIZED": "false",
"PVE_ALLOW_WRITES": "false",
"PDM_HOST": "pdm.example.com",
"PDM_BASE_URL": "https://pdm.example.com:8443/api2/json",
"PDM_TOKEN_ID": "root@pam!mcp",
"PDM_TOKEN_SECRET": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"PDM_AUTH_SCHEME": "PDMAPIToken",
"PDM_AUTH_SEP": "=",
"PDM_TLS_REJECT_UNAUTHORIZED": "false",
"PDM_ALLOW_WRITES": "false",
"PROXMOX_ALLOW_WRITES": "false"
}
}
}
}File locations: .mcp.json in your project root (Claude Code), claude_desktop_config.json (Claude Desktop), .cursor/mcp.json (Cursor).
Related MCP server: Proxmox MCP Server
Configuration
Variable | Required | Default | Purpose |
| for PVE | Proxmox VE hostname; expands to | |
| no | derived from | Full PVE API base URL; overrides |
| for PVE | PVE API token id, e.g. | |
| for PVE | PVE API token secret (UUID shown once at token creation) | |
| no |
| Auth header scheme override |
| no |
| Separator between token id and secret in the auth header |
| no |
| Set |
| no |
| Enables write operations (POST/PUT/DELETE) on the PVE surface |
| for PDM | Proxmox Datacenter Manager hostname; expands to | |
| no | derived from | Full PDM API base URL; overrides |
| for PDM | PDM API token id | |
| for PDM | PDM API token secret | |
| no |
| Auth header scheme override (PDM is newer; adjust if auth fails) |
| no |
| Separator between token id and secret in the auth header |
| no |
| Set |
| no |
| Enables write operations on the PDM surface |
| no |
| Enables write operations on all surfaces |
Each surface needs its host plus token id and secret; everything else has a working default. The auth header is assembled as <scheme>=<token_id><sep><secret>, e.g. PVEAPIToken=root@pam!mcp=SECRET.
Security & write safety
Proxmox credentials: create a dedicated API token (Datacenter > Permissions > API Tokens) and grant it the least privilege you can. For hard read-only, assign the token the built-in PVEAuditor role.
All write operations (POST/PUT/DELETE) are disabled by default. Set
PROXMOX_ALLOW_WRITES=true(all surfaces) orPVE_ALLOW_WRITES=true/PDM_ALLOW_WRITES=true(per surface) to enable them.Endpoints flagged destructive (delete, stop, reset, reboot, suspend, rollback, destroy, wipe, migrate) additionally require
confirm: trueon the individualcall_endpointcall, even when writes are enabled.Every call validates the operation id and required path parameters against the catalog before any request leaves your machine; requests go directly to your Proxmox host, nothing passes through third parties.
The write gate is a guardrail, not a security boundary. The env vars in your MCP config are real credentials, and an AI agent with shell access can bypass the MCP tools and call the Proxmox API directly with them. If you need hard read-only, enforce it at the source: scope the API token itself to read-only permissions (PVEAuditor role).
Tools
Instead of one tool per endpoint, the server exposes each surface through a catalog-backed list/describe/call triple built on mcp-core: list_endpoints discovers operations by category, resource, method, or search term; describe_endpoint returns the full parameter and response spec for one operation; call_endpoint validates the call against the catalog, enforces the write gate, and executes it. Six tools index all 993 endpoints.
pve_list_endpoints Discover Proxmox VE endpoints by category, resource, method, or search
pve_describe_endpoint Full param + response spec for one PVE endpoint
pve_call_endpoint Validate, write-gate, and execute a PVE API call
pdm_list_endpoints Discover Proxmox Datacenter Manager endpoints
pdm_describe_endpoint Full param + response spec for one PDM endpoint
pdm_call_endpoint Validate, write-gate, and execute a PDM API callAPI coverage
993 operations covered: 675 Proxmox VE (PVE) + 318 Proxmox Datacenter Manager (PDM).
Surface | Category | Operations |
PVE | Access & Auth | 45 |
PVE | Cluster | 259 |
PVE | Nodes & Guests | 358 |
PVE | Pools | 7 |
PVE | Storage | 5 |
PVE | System | 1 |
PDM | Access & Auth | 28 |
PDM | Auto Install | 14 |
PDM | Ceph | 12 |
PDM | Configuration | 43 |
PDM | Nodes & Guests | 50 |
PDM | PBS Remotes | 27 |
PDM | PVE Remotes | 93 |
PDM | Ping | 1 |
PDM | Remotes | 19 |
PDM | Resources | 6 |
PDM | Root | 1 |
PDM | SDN | 6 |
PDM | Subscriptions | 17 |
PDM | System | 1 |
Proxmox VE (675 operations)
Method | Path | Operation ID |
GET |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
POST |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
POST |
|
|
PUT |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
GET |
|
|
DELETE |
|
|
GET |
|
|
POST |
|
|
PUT |
|
|
PUT |
|
|
POST |
|
|
Method | Path | Operation ID |
GET |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
GET |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
GET |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
DELETE |
|
|
POST |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
POST |
|
|
POST |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
DELETE |
|
|
GET |
|
|
POST |
|
|
PUT |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
DELETE |
|
|
GET |
|
|
POST |
|
|
PUT |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
DELETE |
|
|
POST |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
POST |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
DELETE |
|
|
POST |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
GET |
|
|
Method | Path | Operation ID |
GET |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
DELETE |
|
|
POST |
|
|
POST |
|
|
GET |
|
|
GET |
|
|
DELETE |
|
|
POST |
|
|
GET |
|
|
DELETE |
|
|
POST |
|
|
GET |
|
|
DELETE |
|
|
POST |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
POST |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
GET |
|
|
DELETE |
|
|
POST |
|
|
PUT |
|
|
DELETE |
|
|
POST |
|
|
GET |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
POST |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
GET |
|
|
PUT |
|
|
POST |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
PUT |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
GET |
|
|
PUT |
|
|
POST |
|
|
POST |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
DELETE |
|
|
GET |
|
|
POST |
|
|
PUT |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
POST |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
PUT |
|
|
POST |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
PUT |
|
|
GET |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
GET |
|
|
PUT |
|
|
POST |
|
|
POST |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
PUT |
|
|
POST |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
GET |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
GET |
|
|
POST |
|
|
POST |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
POST |
|
|
PUT |
|
|
POST |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
POST |
|
|
PUT |
|
|
POST |
|
|
GET |
|
|
GET |
|
|
DELETE |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
Method | Path | Operation ID |
DELETE |
|
|
GET |
|
|
POST |
|
|
PUT |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
Method | Path | Operation ID |
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
Method | Path | Operation ID |
GET |
|
|
Proxmox Datacenter Manager (318 operations)
Method | Path | Operation ID |
GET |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
POST |
|
|
POST |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
DELETE |
|
|
POST |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
DELETE |
|
|
GET |
|
|
POST |
|
|
PUT |
|
|
Method | Path | Operation ID |
GET |
|
|
POST |
|
|
GET |
|
|
DELETE |
|
|
POST |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
PUT |
|
|
Method | Path | Operation ID |
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
Method | Path | Operation ID |
GET |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
Method | Path | Operation ID |
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
PUT |
|
|
DELETE |
|
|
POST |
|
|
GET |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
DELETE |
|
|
GET |
|
|
POST |
|
|
PUT |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
GET |
|
|
DELETE |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
Method | Path | Operation ID |
GET |
|
|
POST |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
DELETE |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
Method | Path | Operation ID |
GET |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
PUT |
|
|
POST |
|
|
POST |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
POST |
|
|
POST |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
PUT |
|
|
POST |
|
|
POST |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
GET |
|
|
DELETE |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
Method | Path | Operation ID |
GET |
|
|
Method | Path | Operation ID |
GET |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
PUT |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
Method | Path | Operation ID |
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
GET |
|
|
Method | Path | Operation ID |
GET |
|
|
Method | Path | Operation ID |
GET |
|
|
GET |
|
|
GET |
|
|
POST |
|
|
GET |
|
|
POST |
|
|
Method | Path | Operation ID |
GET |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
POST |
|
|
GET |
|
|
POST |
|
|
DELETE |
|
|
GET |
|
|
DELETE |
|
|
POST |
|
|
GET |
|
|
POST |
|
|
POST |
|
|
Method | Path | Operation ID |
GET |
|
|
The catalog is generated deterministically from Proxmox's published API schema (apidoc.js): refresh it with npm run regen after downloading a new schema into _source/, then rebuild this section with node scripts/generate-api-coverage.mjs.
Contributing
Contributions and issues are welcome. Please open an issue first before submitting a PR.
License
AGPL-3.0: free for personal and open-source use. Organizations that cannot comply with the AGPL can purchase a commercial license, and hosted/managed versions are available. See COMMERCIAL.md or contact hello@nightsquawk.tech.
Copyright
For copyright concerns or takedown requests, contact hello@nightsquawk.tech.
Available Tools
6 toolspdm_call_endpointA
Call a Proxmox Datacenter Manager API endpoint and return its JSON response. Validates the operationId and required path params against the catalog, enforces the read-only write gate, then executes. Reads (GET) always run; writes (POST/PUT/DELETE) run only when enabled via PROXMOX_ALLOW_WRITES=true (all surfaces) or PDM_ALLOW_WRITES=true (this surface only). Use pdm_describe_endpoint first to learn the exact params.
Inputs: params (required).
pdm_describe_endpointA
Get the full spec for one Proxmox Datacenter Manager endpoint: method, path, path params, query/body params (with types, formats, enums, constraints), the response schema, required permissions, and a request sample. Call before pdm_call_endpoint so you send exactly the right params.
Inputs: params (required).
pdm_list_endpointsA
List Proxmox Datacenter Manager API endpoints (operationId, method, path, category, description, read/write, destructive). Filter by category, resource, method, reads/writes, or search. Use this to discover an endpoint, then pdm_describe_endpoint for its parameters and pdm_call_endpoint to execute it.
Inputs: params (required).
pve_call_endpointA
Call a Proxmox VE API endpoint and return its JSON response. Validates the operationId and required path params against the catalog, enforces the read-only write gate, then executes. Reads (GET) always run; writes (POST/PUT/DELETE) run only when enabled via PROXMOX_ALLOW_WRITES=true (all surfaces) or PVE_ALLOW_WRITES=true (this surface only). Use pve_describe_endpoint first to learn the exact params.
Inputs: params (required).
pve_describe_endpointA
Get the full spec for one Proxmox VE endpoint: method, path, path params, query/body params (with types, formats, enums, constraints), the response schema, required permissions, and a request sample. Call before pve_call_endpoint so you send exactly the right params.
Inputs: params (required).
pve_list_endpointsA
List Proxmox VE API endpoints (operationId, method, path, category, description, read/write, destructive). Filter by category, resource, method, reads/writes, or search. Use this to discover an endpoint, then pve_describe_endpoint for its parameters and pve_call_endpoint to execute it.
Inputs: params (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 6 tools
The two endpoint categories (PVE vs PDM) are cleanly separated by the pve_/pdm_ prefixes, and within each the list/describe/call trio has clearly distinct purposes. The only minor ambiguity is that the two list and two describe tools are functionally identical except for their target API, which could cause a misselection if an agent fails to notice the prefix.
The naming follows a very consistent pattern: {api}_list_endpoints, {api}_describe_endpoint, {api}_call_endpoint for both PVE and PDM. The pattern is perfectly parallel across both surfaces, though the slightly verbose prefix scheme (pve_/pdm_) could arguably be more concise. This is a strong, predictable convention.
Six tools is an ideal count for a server that proxies two large API surfaces. The two trios each cover the full discover→describe→call workflow for their respective API, making each tool earn its place without any redundancy or bloat.
The server's purpose is to proxy arbitrary Proxmox APIs, and it fully covers the necessary surface: discover endpoints, inspect a specific endpoint's spec, and execute the call. The read/write gate and permission metadata are handled by the underlying catalog rather than requiring additional tools. There are no dead-end operations since any Proxmox endpoint can be reached indirectly through this generic pattern.
Maintenance
Related MCP Connectors
Linux server administration over OAuth MCP: shell, Docker, systemd, files and monitoring.
An MCP server that let you interact with Cycloid.io Internal Development Portal and Platform
MCP server for mandates, delegation, policy-gated execution, credential grants, and audit.
MCP server for Pentest-Tools.com: run scans, manage findings and reports via your preffered LLM.
Related MCP Servers
- AlicenseAqualityBmaintenanceMCP server for managing Proxmox VE clusters — provision VMs and containers, manage snapshots and backups, execute commands, browse storage, and monitor resources through natural language37289 PyPI18MIT
- AlicenseCqualityCmaintenanceA comprehensive MCP server providing 92 tools for managing Proxmox Virtual Environment, including QEMU VMs and LXC containers.9252 npm6MIT
- AlicenseBqualityCmaintenanceComprehensive MCP server for Proxmox VE with 68 tools and 4 resources covering VMs, containers, storage, networking, clusters, HA, backups, firewall, and access control.6876 npmMIT
- AlicenseNot gradedqualityCmaintenanceAn MCP server for interacting with the Proxmox Virtual Environment API, enabling management of VMs, containers, storage, and cluster resources through natural language.MIT