HomeLab Monitor MCP
A homelab dashboard with a read-only MCP server: hosts, Docker, GPU, video memory and services
- 236 ★ on the repository
- Last commit
- MIT
Extended access
Why this level
- The dashboard gets host access: a Docker socket with write access, D-Bus and SSH keys to other machines, and control buttons are on by default
- MCP port 9810 exposes the state of the whole fleet to anyone who can reach it
Install
- Works in
Manual install
claude mcp add --transport http homelab http://YOUR-HUB:9810/mcpThe address of your dashboard hub; MCP is on by default.
Access and checks
How we reviewExtended accessThe tool runs code or makes network calls and only reads external data.
- The dashboard gets host access: a Docker socket with write access, D-Bus and SSH keys to other machines, and control buttons are on by default
- MCP port 9810 exposes the state of the whole fleet to anyone who can reach it
This is third-party code. Review the repository files before installing.
What it does
HomeLab Monitor gathers every machine and graphics card of a homelab into one page and answers questions: what the GPU is doing and which model holds the video memory, what running costs, which container eats RAM, what fills the disks and whether anything is down. It runs in one container and polls hosts over SSH on Linux, Raspberry Pi and even Windows, installing nothing on the machines themselves. The built-in read-only MCP server listens on port 9810: any client (Claude, Claude Code, agents on local Ollama models) sees hosts, containers, graphics cards and disks. It has no write tools, so an agent looks but does not touch the fleet. One line connects it: `claude mcp add --transport http homelab http://YOUR-HUB:9810/mcp`, and it is turned off with `ENABLE_MCP=0`. The panel also has its own AI agent that answers from the same tools, plus a benchmark lab for local models.
Who it is for. Owners of home servers with GPUs and local models who want a single fleet overview and an agent answering questions about it from the dashboard data.
Good fit when
- A GPU is always busy and you need to know which Ollama model holds the video memory and what it costs in electricity
- A disk on one of the servers filled up and the agent shows which directories occupy it
- A container ate memory and the agent compares RAM and VRAM by row
- You need to check that every host in the fleet is alive and systemd services are running
Not a fit when
- You need to restart containers and change services through the agent: the MCP server has no write tools
- A fleet in the cloud or a corporate network with strict rules: the service is built for a homelab
- You need monitoring across thousands of nodes: the solution targets a fleet of a few machines
Example request
Show which model currently holds video memory on each graphics card, how much electricity it uses and which containers use the most RAMMCP
- Transport
- http
- Authentication
- not required
Environment variables
MCP_PORT- Port of the built-in MCP server, 9810 by default
ENABLE_MCP- Set to 0 to turn off the MCP server
Limitations
The dashboard runs with host access: the host root is mounted read-only plus the Docker socket with write access and D-Bus. Start, stop and restart buttons for containers and services and self-update are on by default and are turned off with `ENABLE_CONTROLS=0` and `ALLOW_SELF_UPDATE=0` or a Docker socket proxy. The MCP server itself only reads, but access to its port 9810 exposes the whole picture of the fleet, so the port should not face the internet. Polling remote machines needs an SSH key and Python 3 on them (PowerShell on Windows). The GPU panels come alive only when a graphics card is present.
How to disable. Turn MCP off with `ENABLE_MCP=0` and remove the server from the client (`claude mcp remove homelab`). The dashboard is stopped with `docker compose down` and the SSH keys are removed from the remote machines.
FAQ
How do I run HomeLab Monitor?
Download `docker-compose.yml` from the repository (`curl -fsSLO https://raw.githubusercontent.com/SikamikanikoBG/homelab-monitor/main/docker-compose.yml`) and run `docker compose up -d`. The dashboard opens on port 9800 and a GPU is not required.
What is the MCP server address?
`http://<host>:9810/mcp`. The port is set by `MCP_PORT` and the server is turned off by `ENABLE_MCP=0`.
Can the agent stop a container through MCP?
No, the server only reads and has no write tools. The control buttons in the dashboard itself are enabled separately and are not part of MCP.
How does the dashboard poll other machines?
Over SSH: paste the hub's auto-generated key on each machine and the hub starts polling. No agents to install: SSH and Python 3 are needed and PowerShell on Windows.
What does the benchmark lab do?
It loads each of your local Ollama models and sweeps a ladder of context sizes on your cards, recording tokens per second, load time and how much spilled from video memory into system RAM.
Discussion
No questions or reviews yet.
Related
MCP serversA self-hosted homelab hub with a built-in MCP server: the agent gets 32 tools limited by per-key API scopes
A Go CLI that compares a server with its last snapshot, reports only changes that matter and serves them to an agent via MCP
HomelabHero turns a fresh LXC into a homelab command center with Claude Code and a credential broker in one command.
maintenant monitoring MCP server: an agent reads container logs, check history and alerts but never touches the containers
A single-container web dashboard for monitoring and controlling a fleet of 1C MCP servers: status, indexing progress, VRAM and license checks
An MCP server for Linux diagnostics: an AI client reads services, logs and network on local and remote hosts, read-only
README in short
The text promises answers about a homelab: one page for every machine and GPU and an AI agent that reads everything and fixes things only on your command. Next come a quick start through Compose, dashboard features, a table of variables, a section on MCP for your own clients and host access warnings.