homelab-mcp
Allows managing Docker and docker-compose workloads on hosts over SSH.
Enables listing ESPHome nodes, reading and editing YAML configurations, validating them, and flashing devices over OTA via the dashboard or SSH.
Allows reading entity states, calling services, driving automations, browsing area/device/entity registries, and accessing history, logbook, error logs, plus raw REST and WebSocket APIs.
Provides operational access to Proxmox VE, including listing nodes and VMs/LXCs, starting/stopping/rebooting guests, editing guest configs, managing snapshots and storage, and running commands inside guests.
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., "@homelab-mcpCheck the status of my Proxmox VMs and containers"
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.
homelab-mcp
An MCP server that gives an assistant (Claude Code, the Claude app, or any MCP client) operational access to a home lab through one authenticated HTTPS endpoint:
Proxmox VE — list nodes and every VM/LXC (discovered live, so new guests appear automatically), start/stop/reboot, edit guest config, snapshots, storage, run commands inside guests (
pct exec/ QEMU guest agent), and a raw API escape hatch.Home Assistant — read states, call services, drive automations, browse the area/device/entity registries (incl. ESPHome devices), history, logbook, error log, plus raw REST and WebSocket escape hatches.
ESPHome — list nodes, read/edit YAML, validate and flash over OTA, via the dashboard add-on or over SSH.
Shell & Docker — run commands, read/write files, manage systemd units and journals, and manage Docker/compose on any host over SSH.
Fully Kiosk — control Fully Kiosk Browser tablets over the Remote Admin API: screenshot, load a URL, screen on/off, brightness, text-to-speech, restart, and a raw command escape hatch.
Network — ping sweep, TCP port scan and ARP/neighbour tables to discover what is on the LAN.
Call homelab_overview first — it reports which backends are configured and
gives a live inventory of each.
How it fits together
Claude app / Claude Code
│ HTTPS + Bearer token
▼
mcp.fabrici.xyz (your reverse proxy: nginx / NPM / Traefik)
│ http://127.0.0.1:8787/mcp
▼
homelab-mcp ──► Proxmox API (token)
(LXC/VM/Docker)──► Home Assistant (REST + WS)
│ ──► ESPHome dashboard
└────────► SSH to hosts, network scansThe server speaks streamable HTTP MCP and enforces a bearer token (and an
optional IP allowlist) itself, so it is safe to expose behind your existing
reverse proxy alongside ha.fabrici.xyz.
Related MCP server: Homelab MCP Server
Quick start
python -m venv .venv && . .venv/bin/activate
pip install -e .
cp config/homelab.example.yaml config/homelab.yaml
$EDITOR config/homelab.yaml # fill in hosts, tokens, ssh key
export MCP_AUTH_TOKEN=$(openssl rand -hex 32) # or put it in the file
homelab-mcp --check # validate config, list modules
homelab-mcp # serve on :8787/mcpEvery module is optional: leave a section blank and its tools report that they are not configured instead of failing the whole server.
Deployment
The intended target is a small LXC container on Proxmox. See
deploy/ for a systemd unit, an install script and reverse-proxy
snippets (nginx / Nginx Proxy Manager). docs/SETUP.md walks
through provisioning the Proxmox API token, the Home Assistant token, the SSH
key and the mcp.fabrici.xyz proxy entry end to end.
docs/RESILIENCE.md documents what the access path
depends on, the safeguards on the container (protection flag, weekly vzdump)
and how to rebuild or re-mint credentials from scratch.
Connecting a client
Add to the Claude app / Claude Code as a remote MCP server:
URL:
https://mcp.fabrici.xyz/mcpHeader:
Authorization: Bearer <MCP_AUTH_TOKEN>
Security
The user of this repo chose full access (unrestricted shell, all write tools). That is powerful: the bearer token is effectively root on the whole network. Accordingly the server:
requires a bearer token on every request (
hmac.compare_digest);fails closed: refuses to start with neither a token nor an allowlist on a non-loopback bind, unless
server.insecure: trueis set explicitly;supports an IP allowlist;
X-Forwarded-Foris honoured only from trusted proxies, and then the right-most untrusted hop is used, so the allowlist cannot be spoofed by prepending a header (note: a LAN-only allowlist also blocks the Claude app connector — seedocs/CLIENT.md);writes a redacted JSONL audit log (owner-only,
0600) of every state-changing call, and scrubs registered secrets from error messages too;keeps timestamped backups when overwriting files;
can optionally refuse a few catastrophic commands (
guard_destructive: true, off by default) — a best-effort fat-finger backstop, not a security boundary: every configured client already holds full shell access.
Secrets never go in git: config/homelab.yaml, .env and SSH keys are
git-ignored, and config values can be pulled from environment variables.
This server cannot be deployed
Maintenance
Related MCP Connectors
Operate Linux, macOS and Windows from your LLM. Every action runs through an auditable allowlist.
- emisarOAuthdev.emisar
Let AI operate servers without SSH. Choose actions, approve risky changes, and audit every step.
Remote streamable-HTTP MCP server running on a single Cloudflare Worker. Your assistant gets live Airbnb, Amazon, Booking.com, Google Flights, Maps and Reddit data, social search on X, Instagram and TikTok, the Meta Ad Library, and image/video generation without any keys. Connect your own accounts to let it send WhatsApp or Telegram messages, work an IMAP inbox, manage Meta Ads campaigns and publish to X and LinkedIn. OAuth 2.1 with PKCE; stored credentials are AES-256-GCM encrypted.
Real Linux labs your AI agent deploys, routes and runs, with domains, TLS, DBs and an audit log.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides unified access to multiple homelab services including Nginx Proxy Manager, Pi-hole, Uptime Kuma, Portainer, and UPS NUT for monitoring, management, and automation through a single modular interface.MIT
- AlicenseBqualityAmaintenanceEnables AI assistants to manage homelab infrastructure through automated service installation (Jellyfin, Pi-hole, Ollama, Home Assistant, Frigate NVR), VM operations, AI accelerator support (MemryX, Coral TPU, Hailo-8), and Terraform state management with SSH-based discovery and deployment.585MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that gives AI assistants real-time access to your homelab infrastructure. It enables querying node status, managing Docker containers, controlling Proxmox VMs, and inspecting OPNsense firewall state through natural conversation.2MIT
- AlicenseBqualityDmaintenanceEnables AI assistants to manage Proxmox VE infrastructure, including VMs, containers, storage, network, high availability, replication, SDN, and node administration.10018 npmMIT