proxmox-mcp
An open-source Model Context Protocol server for Proxmox VE that allows AI assistants to monitor and manage clusters, VMs, containers, storage, and backups. It provides 314 tools across 19 toolsets, supporting read-only queries and, when enabled, write operations like migrations and backups. It runs in Docker or as a Claude Desktop bundle.
Package and access
Local package with source-attributed installation metadata. Koskamo does not execute packages during review.
Checks and signals
Each line is separate evidence, not a trust score.
- Popularity 1 GitHub star
What you can do with it
- Monitor cluster health and node status
- Manage VMs and containers lifecycle
- Check and manage storage and backups
- Review access control and permissions
Source and maintenance
- Last repository push
- Latest release
- v0.5.1
- Maintenance checked
Packages and installation
Source-provided package data. Koskamo has not executed or live-probed this package.
ghcr.io/mattoddie/proxmox-mcp:0.5.1
{
"transport": "stdio",
"identifier": "ghcr.io/mattoddie/proxmox-mcp:0.5.1",
"registryType": "oci",
"environmentVariables": [
{
"name": "MCP_TRANSPORT",
"value": "stdio",
"description": "Runs the server over stdio. The image defaults to HTTP."
},
{
"name": "PROXMOX_URL",
"isRequired": true,
"description": "Address of any node in the cluster, with the port.",
"placeholder": "https://pve.example.lan:8006"
},
{
"name": "PROXMOX_API_TOKEN",
"description": "Recommended. The whole API token as user@realm!tokenid=secret. Leave empty to use a username and password."
},
{
"name": "PROXMOX_USERNAME",
"description": "Used instead of an API token, as user@realm (e.g. mcp@pve)."
},
{
"name": "PROXMOX_PASSWORD",
"description": "The user's password, used with the username."
},
{
"name": "PROXMOX_TLS_FINGERPRINT",
"description": "Recommended for Proxmox's self-signed certificate: its SHA-256 fingerprint. An https URL needs this or PROXMOX_VERIFY_SSL.",
"placeholder": "AA:BB:CC:…"
},
{
"name": "PROXMOX_VERIFY_SSL",
"description": "Leave empty when you set a fingerprint. true: the certificate is publicly trusted. false: skip the check (insecure)."
},
{
"name": "PROXMOX_DEFAULT_NODE",
"description": "Node used when a request doesn't name one. Not needed on a single-node install."
},
{
"name": "PROXMOX_ALLOW_WRITES",
"format": "boolean",
"default": "false",
"description": "Allow changes: start and stop guests, edit configuration, create VMs, snapshots and backups."
},
{
"name": "PROXMOX_ALLOW_DELETES",
"format": "boolean",
"default": "false",
"description": "Also allow deleting guests, volumes, snapshots, backups and configuration. Needs writes."
},
{
"name": "PROXMOX_ALLOW_EXEC",
"format": "boolean",
"default": "false",
"description": "Also allow commands and file access inside VMs through the guest agent. Needs writes."
},
{
"name": "PROXMOX_TOOLSETS",
"description": "Optional comma-separated toolsets, to expose fewer tools. Empty means all (except raw).",
"placeholder": "cluster,nodes,vms,containers,backup"
},
{
"name": "PROXMOX_AUDIT_LOG",
"description": "Optional. stderr, or a file path inside the container, to log every change as a JSON line."
}
]
}Tools
Reported by the attributed source; not independently observed by Koskamo.
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · repository · passed · metadata changed · updated
- · backfill · recorded · Pre-expansion baseline; unobserved rich metadata remains unknown
Connect from your client
Each snippet configures the same source-provided package; replace placeholders before use.
Cursor
{
"mcpServers": {
"proxmox-mcp-0-5-1": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"MCP_TRANSPORT=<YOUR_MCP_TRANSPORT>",
"-e",
"PROXMOX_URL=<YOUR_PROXMOX_URL>",
"-e",
"PROXMOX_API_TOKEN=<YOUR_PROXMOX_API_TOKEN>",
"-e",
"PROXMOX_USERNAME=<YOUR_PROXMOX_USERNAME>",
"-e",
"PROXMOX_PASSWORD=<YOUR_PROXMOX_PASSWORD>",
"-e",
"PROXMOX_TLS_FINGERPRINT=<YOUR_PROXMOX_TLS_FINGERPRINT>",
"-e",
"PROXMOX_VERIFY_SSL=<YOUR_PROXMOX_VERIFY_SSL>",
"-e",
"PROXMOX_DEFAULT_NODE=<YOUR_PROXMOX_DEFAULT_NODE>",
"-e",
"PROXMOX_ALLOW_WRITES=<YOUR_PROXMOX_ALLOW_WRITES>",
"-e",
"PROXMOX_ALLOW_DELETES=<YOUR_PROXMOX_ALLOW_DELETES>",
"-e",
"PROXMOX_ALLOW_EXEC=<YOUR_PROXMOX_ALLOW_EXEC>",
"-e",
"PROXMOX_TOOLSETS=<YOUR_PROXMOX_TOOLSETS>",
"-e",
"PROXMOX_AUDIT_LOG=<YOUR_PROXMOX_AUDIT_LOG>",
"ghcr.io/mattoddie/proxmox-mcp:0.5.1"
],
"env": {
"MCP_TRANSPORT": "<YOUR_MCP_TRANSPORT>",
"PROXMOX_URL": "<YOUR_PROXMOX_URL>",
"PROXMOX_API_TOKEN": "<YOUR_PROXMOX_API_TOKEN>",
"PROXMOX_USERNAME": "<YOUR_PROXMOX_USERNAME>",
"PROXMOX_PASSWORD": "<YOUR_PROXMOX_PASSWORD>",
"PROXMOX_TLS_FINGERPRINT": "<YOUR_PROXMOX_TLS_FINGERPRINT>",
"PROXMOX_VERIFY_SSL": "<YOUR_PROXMOX_VERIFY_SSL>",
"PROXMOX_DEFAULT_NODE": "<YOUR_PROXMOX_DEFAULT_NODE>",
"PROXMOX_ALLOW_WRITES": "<YOUR_PROXMOX_ALLOW_WRITES>",
"PROXMOX_ALLOW_DELETES": "<YOUR_PROXMOX_ALLOW_DELETES>",
"PROXMOX_ALLOW_EXEC": "<YOUR_PROXMOX_ALLOW_EXEC>",
"PROXMOX_TOOLSETS": "<YOUR_PROXMOX_TOOLSETS>",
"PROXMOX_AUDIT_LOG": "<YOUR_PROXMOX_AUDIT_LOG>"
}
}
}
}Cline
{
"mcpServers": {
"proxmox-mcp-0-5-1": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"MCP_TRANSPORT=<YOUR_MCP_TRANSPORT>",
"-e",
"PROXMOX_URL=<YOUR_PROXMOX_URL>",
"-e",
"PROXMOX_API_TOKEN=<YOUR_PROXMOX_API_TOKEN>",
"-e",
"PROXMOX_USERNAME=<YOUR_PROXMOX_USERNAME>",
"-e",
"PROXMOX_PASSWORD=<YOUR_PROXMOX_PASSWORD>",
"-e",
"PROXMOX_TLS_FINGERPRINT=<YOUR_PROXMOX_TLS_FINGERPRINT>",
"-e",
"PROXMOX_VERIFY_SSL=<YOUR_PROXMOX_VERIFY_SSL>",
"-e",
"PROXMOX_DEFAULT_NODE=<YOUR_PROXMOX_DEFAULT_NODE>",
"-e",
"PROXMOX_ALLOW_WRITES=<YOUR_PROXMOX_ALLOW_WRITES>",
"-e",
"PROXMOX_ALLOW_DELETES=<YOUR_PROXMOX_ALLOW_DELETES>",
"-e",
"PROXMOX_ALLOW_EXEC=<YOUR_PROXMOX_ALLOW_EXEC>",
"-e",
"PROXMOX_TOOLSETS=<YOUR_PROXMOX_TOOLSETS>",
"-e",
"PROXMOX_AUDIT_LOG=<YOUR_PROXMOX_AUDIT_LOG>",
"ghcr.io/mattoddie/proxmox-mcp:0.5.1"
],
"env": {
"MCP_TRANSPORT": "<YOUR_MCP_TRANSPORT>",
"PROXMOX_URL": "<YOUR_PROXMOX_URL>",
"PROXMOX_API_TOKEN": "<YOUR_PROXMOX_API_TOKEN>",
"PROXMOX_USERNAME": "<YOUR_PROXMOX_USERNAME>",
"PROXMOX_PASSWORD": "<YOUR_PROXMOX_PASSWORD>",
"PROXMOX_TLS_FINGERPRINT": "<YOUR_PROXMOX_TLS_FINGERPRINT>",
"PROXMOX_VERIFY_SSL": "<YOUR_PROXMOX_VERIFY_SSL>",
"PROXMOX_DEFAULT_NODE": "<YOUR_PROXMOX_DEFAULT_NODE>",
"PROXMOX_ALLOW_WRITES": "<YOUR_PROXMOX_ALLOW_WRITES>",
"PROXMOX_ALLOW_DELETES": "<YOUR_PROXMOX_ALLOW_DELETES>",
"PROXMOX_ALLOW_EXEC": "<YOUR_PROXMOX_ALLOW_EXEC>",
"PROXMOX_TOOLSETS": "<YOUR_PROXMOX_TOOLSETS>",
"PROXMOX_AUDIT_LOG": "<YOUR_PROXMOX_AUDIT_LOG>"
}
}
}
}VS Code
{
"servers": {
"proxmox-mcp-0-5-1": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"MCP_TRANSPORT=<YOUR_MCP_TRANSPORT>",
"-e",
"PROXMOX_URL=<YOUR_PROXMOX_URL>",
"-e",
"PROXMOX_API_TOKEN=<YOUR_PROXMOX_API_TOKEN>",
"-e",
"PROXMOX_USERNAME=<YOUR_PROXMOX_USERNAME>",
"-e",
"PROXMOX_PASSWORD=<YOUR_PROXMOX_PASSWORD>",
"-e",
"PROXMOX_TLS_FINGERPRINT=<YOUR_PROXMOX_TLS_FINGERPRINT>",
"-e",
"PROXMOX_VERIFY_SSL=<YOUR_PROXMOX_VERIFY_SSL>",
"-e",
"PROXMOX_DEFAULT_NODE=<YOUR_PROXMOX_DEFAULT_NODE>",
"-e",
"PROXMOX_ALLOW_WRITES=<YOUR_PROXMOX_ALLOW_WRITES>",
"-e",
"PROXMOX_ALLOW_DELETES=<YOUR_PROXMOX_ALLOW_DELETES>",
"-e",
"PROXMOX_ALLOW_EXEC=<YOUR_PROXMOX_ALLOW_EXEC>",
"-e",
"PROXMOX_TOOLSETS=<YOUR_PROXMOX_TOOLSETS>",
"-e",
"PROXMOX_AUDIT_LOG=<YOUR_PROXMOX_AUDIT_LOG>",
"ghcr.io/mattoddie/proxmox-mcp:0.5.1"
],
"env": {
"MCP_TRANSPORT": "<YOUR_MCP_TRANSPORT>",
"PROXMOX_URL": "<YOUR_PROXMOX_URL>",
"PROXMOX_API_TOKEN": "<YOUR_PROXMOX_API_TOKEN>",
"PROXMOX_USERNAME": "<YOUR_PROXMOX_USERNAME>",
"PROXMOX_PASSWORD": "<YOUR_PROXMOX_PASSWORD>",
"PROXMOX_TLS_FINGERPRINT": "<YOUR_PROXMOX_TLS_FINGERPRINT>",
"PROXMOX_VERIFY_SSL": "<YOUR_PROXMOX_VERIFY_SSL>",
"PROXMOX_DEFAULT_NODE": "<YOUR_PROXMOX_DEFAULT_NODE>",
"PROXMOX_ALLOW_WRITES": "<YOUR_PROXMOX_ALLOW_WRITES>",
"PROXMOX_ALLOW_DELETES": "<YOUR_PROXMOX_ALLOW_DELETES>",
"PROXMOX_ALLOW_EXEC": "<YOUR_PROXMOX_ALLOW_EXEC>",
"PROXMOX_TOOLSETS": "<YOUR_PROXMOX_TOOLSETS>",
"PROXMOX_AUDIT_LOG": "<YOUR_PROXMOX_AUDIT_LOG>"
}
}
}
}Claude Desktop
{
"mcpServers": {
"proxmox-mcp-0-5-1": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"MCP_TRANSPORT=<YOUR_MCP_TRANSPORT>",
"-e",
"PROXMOX_URL=<YOUR_PROXMOX_URL>",
"-e",
"PROXMOX_API_TOKEN=<YOUR_PROXMOX_API_TOKEN>",
"-e",
"PROXMOX_USERNAME=<YOUR_PROXMOX_USERNAME>",
"-e",
"PROXMOX_PASSWORD=<YOUR_PROXMOX_PASSWORD>",
"-e",
"PROXMOX_TLS_FINGERPRINT=<YOUR_PROXMOX_TLS_FINGERPRINT>",
"-e",
"PROXMOX_VERIFY_SSL=<YOUR_PROXMOX_VERIFY_SSL>",
"-e",
"PROXMOX_DEFAULT_NODE=<YOUR_PROXMOX_DEFAULT_NODE>",
"-e",
"PROXMOX_ALLOW_WRITES=<YOUR_PROXMOX_ALLOW_WRITES>",
"-e",
"PROXMOX_ALLOW_DELETES=<YOUR_PROXMOX_ALLOW_DELETES>",
"-e",
"PROXMOX_ALLOW_EXEC=<YOUR_PROXMOX_ALLOW_EXEC>",
"-e",
"PROXMOX_TOOLSETS=<YOUR_PROXMOX_TOOLSETS>",
"-e",
"PROXMOX_AUDIT_LOG=<YOUR_PROXMOX_AUDIT_LOG>",
"ghcr.io/mattoddie/proxmox-mcp:0.5.1"
],
"env": {
"MCP_TRANSPORT": "<YOUR_MCP_TRANSPORT>",
"PROXMOX_URL": "<YOUR_PROXMOX_URL>",
"PROXMOX_API_TOKEN": "<YOUR_PROXMOX_API_TOKEN>",
"PROXMOX_USERNAME": "<YOUR_PROXMOX_USERNAME>",
"PROXMOX_PASSWORD": "<YOUR_PROXMOX_PASSWORD>",
"PROXMOX_TLS_FINGERPRINT": "<YOUR_PROXMOX_TLS_FINGERPRINT>",
"PROXMOX_VERIFY_SSL": "<YOUR_PROXMOX_VERIFY_SSL>",
"PROXMOX_DEFAULT_NODE": "<YOUR_PROXMOX_DEFAULT_NODE>",
"PROXMOX_ALLOW_WRITES": "<YOUR_PROXMOX_ALLOW_WRITES>",
"PROXMOX_ALLOW_DELETES": "<YOUR_PROXMOX_ALLOW_DELETES>",
"PROXMOX_ALLOW_EXEC": "<YOUR_PROXMOX_ALLOW_EXEC>",
"PROXMOX_TOOLSETS": "<YOUR_PROXMOX_TOOLSETS>",
"PROXMOX_AUDIT_LOG": "<YOUR_PROXMOX_AUDIT_LOG>"
}
}
}
}Let your agent find its tools
Find servers like proxmox-mcp from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.