CAT
/MCP
SkillsMCPMarketplacesDigestToolsAdvertise

This week in Claude

Every Monday: Claude Code, Agent SDK, MCP, and the Anthropic platform moves worth your time.

Skills by Category
Frontend DevelopmentBackend & APIsTesting & QASecurityDevOps & CI/CDGit & Pull RequestsDocumentationCode Review & QualityAI & Agent BuildingSkill Development
MCP Servers by Category
Sales & MarketingWeb & Browser AutomationDatabasesAI & LLM ToolsCloud & InfrastructureCommunication & MessagingDeveloper ToolsDesign & CreativeDocuments & KnowledgeSearch & Web Crawling
Marketplaces by Category
AI Agents & OrchestrationLLM IntegrationDevelopment ToolsFrontend & UIBackend & APIsDatabasesTesting & Code QualityDevOps & CloudSecurity & ComplianceGit & Version Control

Cross AI Tools

Discover Claude Code plugins, extensions, and tools. Automatically updated directory of Anthropic Claude AI marketplaces with development tools, productivity plugins, and integrations.

Resources

  • Browse Skills
  • Browse MCP Servers
  • Browse Marketplaces
  • Plugins Reference

Community

  • About
  • Tools
  • Feedback
  • Privacy Policy
  • Advertise

Built for the Claude Code community with Claude Code by @mertduzgun

Independent project, not affiliated with Anthropic

Proxmox VE MCP Server

samik081/mcp-pve
9authSTDIOregistry active
Summary

Connects Claude to the Proxmox VE REST API with 105 tools across 12 categories covering VMs, containers, storage, networking, and cluster operations. Three access tiers let you lock it down to read-only, add execution commands like start and stop, or go full access with create and delete. Category filtering and per-tool allowlists keep the context focused. Built on native fetch with self-signed cert support, ships as npm package or multi-arch Docker images, and supports both stdio and HTTP transports for remote MCP setups. Tested against PVE 9.0.10. Useful for managing homelab infrastructure or production clusters through natural language without switching to the web UI.

CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →

npm version Docker image License: MIT Node.js Version

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

API Compatibility

Tested with Proxmox VE 9.0.10.

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:

TierToolsDescription
full (default)105Read, execute, and write -- full control
read-execute68Read and execute -- no resource creation/deletion
read-only51Read 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 server. They will not appear in your AI tool's tool list, keeping the context clean.

Environment Variables

VariableRequiredDefaultDescription
PVE_BASE_URLYes--URL of your PVE instance (e.g. https://pve:8006)
PVE_TOKEN_IDYes--API token ID (user@realm!tokenname)
PVE_TOKEN_SECRETYes--API token UUID secret
PVE_ACCESS_TIERNofullread-only, read-execute, or full
PVE_CATEGORIESNo(all)Comma-separated category allowlist
PVE_TOOL_BLACKLISTNo(none)Comma-separated list of tool names to exclude (e.g., pve_delete_qemu_vm)
PVE_TOOL_WHITELISTNo(none)Comma-separated list of tool names to force-include, bypassing access tier and category filters
PVE_VERIFY_SSLNotrueSet false for self-signed certs
DEBUGNofalseEnable debug logging to stderr
MCP_TRANSPORTNostdioTransport mode: stdio (default) or http
MCP_PORTNo3000HTTP server port (only used when MCP_TRANSPORT=http)
MCP_HOSTNo0.0.0.0HTTP server bind address (only used when MCP_TRANSPORT=http)
MCP_EXCLUDE_TOOL_TITLESNofalseSet true to omit tool titles from registration (saves tokens)

Create API tokens in the PVE UI under Datacenter > Permissions > API Tokens. Make sure to uncheck "Privilege Separation" if you want the token to inherit the user's full permissions.

Available Categories

nodes, qemu, lxc, storage, cluster, access, pools, network, firewall, backup, tasks, ha

Tools

mcp-pve provides 105 tools organized by category. Each tool's Access column shows the minimum tier required: read-only (available in all tiers), read-execute (requires read-execute or full), or full (requires full tier only). The Hints column shows tool behavior: read-only (no state changes), destructive (modifies existing state), idempotent (same result if called twice).

Nodes (8 tools)
ToolDescriptionAccessHints
pve_list_nodesList all nodes in the clusterread-onlyread-only, idempotent
pve_get_node_statusGet detailed node status (CPU, memory, uptime, load)read-onlyread-only, idempotent
pve_get_node_versionGet PVE version info for a noderead-onlyread-only, idempotent
pve_get_node_dnsGet DNS settings for a noderead-onlyread-only, idempotent
pve_get_node_timeGet time and timezone info for a noderead-onlyread-only, idempotent
pve_get_node_syslogGet system log entries from a noderead-onlyread-only, idempotent
pve_list_node_servicesList all system services on a noderead-onlyread-only, idempotent
pve_manage_node_serviceStart, stop, restart, or reload a node serviceread-executedestructive
QEMU Virtual Machines (20 tools)
ToolDescriptionAccessHints
pve_list_qemu_vmsList all QEMU VMs on a noderead-onlyread-only, idempotent
pve_get_qemu_statusGet current VM status (CPU, memory, disk, network)read-onlyread-only, idempotent
pve_get_qemu_configGet VM configurationread-onlyread-only, idempotent
pve_get_qemu_rrddataGet RRD statistics over a time periodread-onlyread-only, idempotent
pve_list_qemu_snapshotsList all VM snapshotsread-onlyread-only, idempotent
pve_start_qemu_vmStart a VMread-executedestructive
pve_stop_qemu_vmStop a VM (immediate)read-executedestructive
pve_shutdown_qemu_vmGracefully shut down a VMread-executedestructive
pve_reboot_qemu_vmReboot a VMread-executedestructive
pve_suspend_qemu_vmSuspend a VMread-executedestructive
pve_resume_qemu_vmResume a suspended VMread-executedestructive
pve_reset_qemu_vmReset a VM (hard)read-executedestructive
pve_migrate_qemu_vmMigrate a VM to another noderead-executedestructive
pve_create_qemu_vmCreate a new VMfull—
pve_delete_qemu_vmDelete a VM and all its datafulldestructive
pve_update_qemu_configUpdate VM configurationfulldestructive, idempotent
pve_clone_qemu_vmClone a VMfull—
pve_create_qemu_snapshotCreate a VM snapshotfull—
pve_delete_qemu_snapshotDelete a VM snapshotfulldestructive
pve_rollback_qemu_snapshotRollback a VM to a snapshotfulldestructive, idempotent
LXC Containers (18 tools)
ToolDescriptionAccessHints
pve_list_lxc_containersList all LXC containers on a noderead-onlyread-only, idempotent
pve_get_lxc_statusGet current container statusread-onlyread-only, idempotent
pve_get_lxc_configGet container configurationread-onlyread-only, idempotent
pve_get_lxc_rrddataGet RRD statistics over a time periodread-onlyread-only, idempotent
pve_list_lxc_snapshotsList all container snapshotsread-onlyread-only, idempotent
pve_start_lxc_containerStart a containerread-executedestructive
pve_stop_lxc_containerStop a container (immediate)read-executedestructive
pve_shutdown_lxc_containerGracefully shut down a containerread-executedestructive
pve_reboot_lxc_containerReboot a containerread-executedestructive
pve_suspend_lxc_containerSuspend (freeze) a containerread-executedestructive
pve_resume_lxc_containerResume (unfreeze) a containerread-executedestructive
pve_create_lxc_containerCreate a new containerfull—
pve_delete_lxc_containerDelete a container and all its datafulldestructive
pve_update_lxc_configUpdate container configurationfulldestructive, idempotent
pve_clone_lxc_containerClone a containerfull—
pve_create_lxc_snapshotCreate a container snapshotfull—
pve_delete_lxc_snapshotDelete a container snapshotfulldestructive
pve_rollback_lxc_snapshotRollback a container to a snapshotfulldestructive, idempotent
Storage (8 tools)
ToolDescriptionAccessHints
pve_list_storageList all configured storage backendsread-onlyread-only, idempotent
pve_get_storage_configGet storage backend configurationread-onlyread-only, idempotent
pve_list_node_storageList available storage on a node with usage inforead-onlyread-only, idempotent
pve_get_storage_statusGet storage status and usage on a noderead-onlyread-only, idempotent
pve_list_storage_contentList storage content (images, ISOs, backups)read-onlyread-only, idempotent
pve_create_storageCreate a new storage backendfull—
pve_update_storageUpdate storage configurationfulldestructive, idempotent
pve_delete_storageDelete a storage backendfulldestructive
Cluster (9 tools)
ToolDescriptionAccessHints
pve_get_cluster_statusGet cluster status (membership, quorum)read-onlyread-only, idempotent
pve_list_cluster_resourcesList all cluster resources with optional type filterread-onlyread-only, idempotent
pve_get_next_vmidGet the next available VMIDread-onlyread-only, idempotent
pve_get_cluster_logGet recent cluster log entriesread-onlyread-only, idempotent
pve_get_cluster_optionsGet datacenter optionsread-onlyread-only, idempotent
pve_list_cluster_backup_infoList guests not covered by backup jobsread-onlyread-only, idempotent
pve_get_cluster_ha_statusGet HA manager statusread-onlyread-only, idempotent
pve_list_cluster_replicationList all replication jobsread-onlyread-only, idempotent
pve_update_cluster_optionsUpdate datacenter optionsfulldestructive, idempotent
Access Control (10 tools)
ToolDescriptionAccessHints
pve_list_usersList all usersread-onlyread-only, idempotent
pve_get_userGet user detailsread-onlyread-only, idempotent
pve_list_rolesList all roles and privilegesread-onlyread-only, idempotent
pve_list_groupsList all user groupsread-onlyread-only, idempotent
pve_list_aclsList all ACL entriesread-onlyread-only, idempotent
pve_list_domainsList authentication domains/realmsread-onlyread-only, idempotent
pve_create_userCreate a new userfull—
pve_update_userUpdate user propertiesfulldestructive, idempotent
pve_delete_userDelete a userfulldestructive
pve_update_aclGrant or revoke ACL permissionsfulldestructive, idempotent
Pools (5 tools)
ToolDescriptionAccessHints
pve_list_poolsList all resource poolsread-onlyread-only, idempotent
pve_get_poolGet pool details and membersread-onlyread-only, idempotent
pve_create_poolCreate a resource poolfull—
pve_update_poolUpdate pool members and settingsfulldestructive, idempotent
pve_delete_poolDelete a resource poolfulldestructive
Network (5 tools)
ToolDescriptionAccessHints
pve_list_networksList all network interfaces on a noderead-onlyread-only, idempotent
pve_get_networkGet network interface configurationread-onlyread-only, idempotent
pve_create_networkCreate a network interfacefull—
pve_update_networkUpdate network interface configurationfulldestructive, idempotent
pve_delete_networkDelete a network interfacefulldestructive
Firewall (8 tools)
ToolDescriptionAccessHints
pve_get_firewall_optionsGet cluster firewall optionsread-onlyread-only, idempotent
pve_list_firewall_rulesList cluster firewall rulesread-onlyread-only, idempotent
pve_list_firewall_aliasesList firewall aliasesread-onlyread-only, idempotent
pve_list_firewall_ipsetsList firewall IP setsread-onlyread-only, idempotent
pve_update_firewall_optionsUpdate cluster firewall optionsfulldestructive, idempotent
pve_create_firewall_ruleCreate a firewall rulefull—
pve_update_firewall_ruleUpdate a firewall rulefulldestructive, idempotent
pve_delete_firewall_ruleDelete a firewall rulefulldestructive
Backup (5 tools)
ToolDescriptionAccessHints
pve_list_backup_jobsList all scheduled backup jobsread-onlyread-only, idempotent
pve_get_backup_jobGet backup job configurationread-onlyread-only, idempotent
pve_run_backupRun an immediate backup (vzdump)read-execute—
pve_create_backup_jobCreate a scheduled backup jobfull—
pve_delete_backup_jobDelete a scheduled backup jobfulldestructive
Tasks (4 tools)
ToolDescriptionAccessHints
pve_list_tasksList recent tasks on a noderead-onlyread-only, idempotent
pve_get_task_statusGet task status by UPIDread-onlyread-only, idempotent
pve_get_task_logGet task log output by UPIDread-onlyread-only, idempotent
pve_stop_taskStop a running taskread-executedestructive
High Availability (5 tools)
ToolDescriptionAccessHints
pve_list_ha_resourcesList all HA-managed resourcesread-onlyread-only, idempotent
pve_get_ha_resourceGet HA configuration for a resourceread-onlyread-only, idempotent
pve_create_ha_resourceAdd a VM/container to HA managementfull—
pve_update_ha_resourceUpdate HA resource configurationfulldestructive, idempotent
pve_delete_ha_resourceRemove a resource from HA managementfulldestructive

Verify It Works

After configuring your MCP client, ask your AI assistant:

"What nodes are in my Proxmox cluster?"

If the connection is working, the assistant will call pve_list_nodes and return your nodes with their current status.

Usage Examples

Once configured, ask your AI tool questions in natural language:

  • "List all VMs on node pve1" -- calls pve_list_qemu_vms to show VMs with their status, CPU, and memory usage.

  • "What's the status of VM 100?" -- calls pve_get_qemu_status to show real-time resource utilization.

  • "Start container 200 on pve1" -- calls pve_start_lxc_container to start the container and returns the task UPID.

  • "Create a snapshot of VM 100 called pre-upgrade" -- calls pve_create_qemu_snapshot to create a snapshot before changes.

  • "Show me the cluster resources" -- calls pve_list_cluster_resources to show all VMs, containers, storage, and nodes.

  • "Migrate VM 100 to node pve2" -- calls pve_migrate_qemu_vm to live-migrate the VM to another node.

Troubleshooting

Connection refused / ECONNREFUSED

Check that PVE_BASE_URL is correct and includes the port (default: 8006). Ensure the PVE host is reachable from where the MCP server is running.

SSL certificate errors

If your PVE instance uses a self-signed certificate, set PVE_VERIFY_SSL=false. This disables TLS verification for all requests.

Tools not showing up

Check your access tier setting. In read-only mode, only 51 tools are registered. In read-execute mode, 68 tools are registered. Use full (or omit PVE_ACCESS_TIER) for all 105 tools. Check PVE_CATEGORIES -- only tools in listed categories are registered. Also verify the server started without errors by checking stderr output.

Development

# Install dependencies
npm install

# Build the project
npm run build

# Run in development mode (auto-reload)
npm run dev

# Open the MCP Inspector for interactive testing
npm run inspect

License

MIT

Featured
CodeRabbit
CodeRabbit
AI writes the code. CodeRabbit catches the slop.
Try For Free →
Keep your Mac awake
Keep your Mac awake
Keep your Mac awake while Claude Code and 40+ AI agents run. Sleeps when they're idle.
One time payment $9 →
Context.devContext.dev
Context.dev
Integrate web data into your AI product. One API to scrape website & brand data.
Get API Key Now →
Make your agent a DeFi expert
Make your agent a DeFi expert
Agent, run crypto. Access onchain data & trade routes via 1inch.
Install now →
Make money from your Skills
Make money from your Skills
On Capafy, your Skill runs online 24/7 as an agent product, and you get paid every time someone uses it.
Start earning →
AppSignal
AppSignal
Monitor with ease. Code with confidence.
Start Free Trial →

Configuration

PVE_BASE_URL*

URL of the Proxmox VE instance (e.g. https://pve.example.com:8006)

PVE_TOKEN_ID*secret

Proxmox VE API token ID (e.g. user@pam!token-name)

PVE_TOKEN_SECRET*secret

Proxmox VE API token secret

Registryactive
Package@samik081/mcp-pve
TransportSTDIO
AuthRequired
UpdatedApr 9, 2026
View on GitHub