Proxmox MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PDM_HOST | No | Proxmox Datacenter Manager hostname (expands to https://<host>:8443/api2/json) | |
| PVE_HOST | No | Proxmox VE hostname (expands to https://<host>:8006/api2/json) | |
| PDM_AUTH_SEP | No | Override the default '=' separator in the auth header | |
| PDM_BASE_URL | No | Full Proxmox Datacenter Manager API base URL (alternative to PDM_HOST) | |
| PDM_TOKEN_ID | No | Proxmox Datacenter Manager API token ID | |
| PVE_AUTH_SEP | No | Override the default '=' separator in the auth header | |
| PVE_BASE_URL | No | Full Proxmox VE API base URL (alternative to PVE_HOST) | |
| PVE_TOKEN_ID | No | Proxmox VE API token ID (e.g., root@pam!mcp) | |
| PDM_AUTH_SCHEME | No | Override the default PDMAPIToken authentication scheme | |
| PVE_AUTH_SCHEME | No | Override the default PVEAPIToken authentication scheme | |
| PDM_ALLOW_WRITES | No | Set to 'true' to enable write operations for PDM surface | |
| PDM_TOKEN_SECRET | No | Proxmox Datacenter Manager API token secret | |
| PVE_ALLOW_WRITES | No | Set to 'true' to enable write operations for PVE surface | |
| PVE_TOKEN_SECRET | No | Proxmox VE API token secret (UUID) | |
| PROXMOX_ALLOW_WRITES | No | Set to 'true' to enable write operations for all surfaces | |
| PDM_TLS_REJECT_UNAUTHORIZED | No | Set to 'false' to accept self-signed certificates (default 'true') | |
| PVE_TLS_REJECT_UNAUTHORIZED | No | Set to 'false' to accept self-signed certificates (default 'true') |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| pdm_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. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
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.