Proxmox MCP Server
Enables read-only interaction with Proxmox homelab VMs and containers, allowing LLM agents to list VMs, monitor status and performance metrics, view snapshots, and check cluster health through natural language queries.
README
Proxmox MCP Server
A read-only MCP (Model Context Protocol) server that allows LLM agents to interact with your Proxmox homelab VMs.
Features
- 📋 List all VMs and containers across your Proxmox cluster
- 🔍 Get detailed VM information including hardware specs, network config, and disks
- 📊 Monitor VM status with real-time CPU, memory, and I/O metrics
- 📈 Historical metrics with hourly, daily, weekly, monthly, or yearly data
- 📸 List VM snapshots to see backup points
- 🖥️ Cluster overview with node status and aggregate resources
All operations are read-only - your VMs are safe!
Quick Start
1. Install UV (if not already installed)
curl -LsSf https://astral.sh/uv/install.sh | sh
2. Configure Proxmox credentials
cp .env.example .env
# Edit .env with your Proxmox details
3. Create a read-only API token in Proxmox
- Go to Datacenter → Permissions → API Tokens
- Click Add
- Select a user (or create a new one with
PVEAuditorrole) - Set Token ID (e.g.,
homelab-mcp) - Uncheck "Privilege Separation" if using an auditor user
- Copy the token secret (shown only once!)
Recommended: Create a dedicated auditor user
# SSH to your Proxmox server
pveum user add mcp-reader@pve
pveum acl modify / -user mcp-reader@pve -role PVEAuditor
pveum user token add mcp-reader@pve proxmox-mcp
4. Run the server
cd proxmox-mcp
# SSE mode (recommended for remote access)
uv run proxmox-mcp --transport sse
# Or stdio mode (for local VS Code/CLI usage)
uv run proxmox-mcp --transport stdio
Alternative: Install globally with pip
pip install -e .
proxmox-mcp --transport sse
Available Tools
| Tool | Description |
|---|---|
list_vms |
List all VMs and containers with basic info |
get_vm_info |
Get detailed VM configuration and specs |
get_vm_status |
Get current runtime status and metrics |
get_vm_metrics |
Get historical performance data |
get_vm_filesystem_info |
Get disk space from inside a VM (requires guest agent) |
list_nodes |
List all Proxmox nodes |
list_vm_snapshots |
List snapshots for a VM |
get_cluster_status |
Get cluster health and totals |
Configuration
All settings can be configured via environment variables or a .env file:
| Variable | Description | Default |
|---|---|---|
PROXMOX_HOST |
Proxmox server hostname/IP | localhost |
PROXMOX_PORT |
Proxmox API port | 8006 |
PROXMOX_VERIFY_SSL |
Verify SSL certificates | false |
PROXMOX_API_TOKEN_ID |
API token ID (user@realm!tokenid) | - |
PROXMOX_API_TOKEN_SECRET |
API token secret | - |
MCP_SERVER_HOST |
SSE server bind address | 0.0.0.0 |
MCP_SERVER_PORT |
SSE server port | 8080 |
Using with LLM Clients
VS Code with GitHub Copilot
Add to your VS Code settings.json or user mcp.json:
{
"servers": {
"proxmox": {
"url": "http://your-server:8080/sse"
}
}
}
Claude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"proxmox": {
"url": "http://your-server:8080/sse"
}
}
}
Local stdio mode
For local usage, you can run with stdio transport:
{
"mcpServers": {
"proxmox": {
"command": "uv",
"args": [
"run",
"--directory", "/path/to/proxmox-mcp",
"proxmox-mcp",
"--transport", "stdio"
]
}
}
}
Example Queries
Once connected, you can ask your LLM:
- "List all my VMs"
- "What's the status of VM 100?"
- "Show me the CPU usage history for my plex server"
- "Which VMs are currently stopped?"
- "How much memory is my cluster using?"
Security Notes
- Use API tokens instead of username/password
- Use the PVEAuditor role for true read-only access
- Run behind a reverse proxy with HTTPS in production
- Firewall the MCP port to trusted networks only
Development
cd proxmox-mcp
# Install dev dependencies
uv sync --extra dev
# Run tests
uv run pytest
# Lint
uv run ruff check src/
License
MIT
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
E2B
Using MCP to run code via e2b.