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 "Install 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.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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.
Personal assistant MCP server with search, execute, packages, jobs, secrets, and integrations.
Self-hosted MCP gateway: turn any API, database or MCP server into AI connectors — no code.
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
- AlicenseAqualityAmaintenanceManage Docker infrastructure across multiple homelab hosts including Unraid, Proxmox, and bare metal servers. Enables container lifecycle management, log retrieval, resource monitoring, and Docker operations across your entire homelab from a single interface.1302MIT
- 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.584MIT
- 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
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/jakubfabrici/homelab-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server