homelab-mcp
Provides read-only status monitoring for a Raspberry Pi homelab, including systemd service health, disk usage, CPU temperature, uptime/load, and the LAN game-server status feed.
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-mcp how's the homelab doing?"
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
Raspberry Pi homelab status, exposed as an MCP server — so an MCP client (Claude Code, Claude Desktop) can be asked "how's the homelab doing?" and get real systemd service health, disk usage, CPU temp, and the LAN game-server feed back directly, instead of SSHing in and checking by hand.
Read-only by design: every tool queries state, nothing restarts, stops, or reboots anything.

Architecture
The server runs on the Pi itself — not on the machine running the MCP client — since that's where the systemd units, disk, and thermal sensor actually are. The MCP client reaches it over SSH-tunneled stdio: SSH just exposes a local stdio process to a remote client, no special MCP-side support needed.
MCP client (laptop) --ssh--> homelab-mcp server (on the Pi) --> systemctl / /sys/class/thermal / /proc/uptime
\--> HTTP GET to the LAN game-server status feed (192.168.1.111:8091)See Chain-P/homelab for the full
writeup of the Pi/homelab setup this project queries.
Related MCP server: Oraclarr
Tools
Tool | Description |
| One-shot health check: hostname, uptime, load average, disk usage, CPU temp, and every known service's status. |
| Detailed systemd status for one service: |
| Total/used/free bytes and percent used for a filesystem path. |
| Proxies the Windows box's existing game-server status feed (Minecraft/Zomboid/Terraria host). |
service_status only accepts the four known unit names above — the MCP tool
schema itself rejects anything else before the tool body ever runs.
Requirements
Python 3.10+ (the Pi's system Python is 3.9, hence
uvbelow)Linux with
systemctland a/sys/class/thermal/thermal_zone0/tempsensorSSH key access to the host this runs on
Install & run (on the Pi)
curl -LsSf https://astral.sh/uv/install.sh | sh # installs uv, no root needed
uv python install 3.12
git clone https://github.com/Chain-P/homelab-mcp.git
cd homelab-mcp
uv venv --python 3.12 venv
venv/bin/pip install -e .
venv/bin/homelab-mcp # smoke test — should hang waiting on stdio, Ctrl+C to stopConfigure in an MCP client
Since the server lives on the Pi and the client runs elsewhere, invoke it over SSH:
{
"mcpServers": {
"homelab": {
"command": "ssh",
"args": ["pi@zero.local", "/home/pi/homelab-mcp/venv/bin/homelab-mcp"]
}
}
}Then ask the client something like "how's the homelab doing?" or "is tracker-app running?"
Development
Tests mock every hardware/systemd dependency (subprocess.run,
/sys/class/thermal/..., /proc/uptime, the game-server HTTP call), so
they run identically in CI and on the Pi — no real systemd state required:
pip install -e ".[dev]"
ruff check .
pytestRoadmap
Log tailing for the known services.
A mutating tool (restart a service) — deliberately not in v1; read-only first, gate anything that changes state separately and explicitly.
License
MIT
Available Tools
4 toolsdisk_usageA
Get disk usage (total/used/free bytes, percent used) for a filesystem path on the Pi.
Inputs: path.
game_server_statusA
Get the current game-server status feed from the LAN Windows box (Minecraft/Zomboid/Terraria host).
Inputs: no named parameters.
service_statusA
Get detailed systemd status (active state, uptime, memory) for one known homelab service.
Args: name: Which service to query: tracker-app, coinbot, zero-bot, or zero-two.
Inputs: name (required).
system_summaryA
One-shot homelab health check: hostname, uptime, load average, disk usage, CPU temp, and every service's status.
Inputs: no named parameters.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 4 tools
Most tools have clear targets, but system_summary overlaps with service_status and disk_usage by bundling both into one health check. game_server_status is distinct, though it could also be considered part of the overall summary. Descriptions are clear enough to avoid serious misselection.
All tool names use clear snake_case noun phrases like service_status, disk_usage, and game_server_status. The pattern is consistent in style, with system_summary being a slight semantic deviation but still readable and predictable.
Four tools is on the smaller side but well-scoped for a focused homelab status/health server. Each tool provides a meaningful query with no redundant bloat.
The domain is read-only homelab monitoring, and the set covers per-service status, disk usage, game-server status, and an aggregated health summary. Logs or service controls are absent but not essential for the apparent purpose.
Related MCP Connectors
Health checks for public MCP servers: status, latency, tools, and uptime.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Hosted MCP server for live public-data APIs and Skills for AI agents.
Linux server administration over OAuth MCP: shell, Docker, systemd, files and monitoring.
Related MCP Servers
- AlicenseAqualityCmaintenanceAn MCP server exposing 72 tools across 26 homelab services, enabling LLMs to monitor and manage infrastructure, media, storage, and networking with a single endpoint.16MIT
- AlicenseNot gradedqualityBmaintenanceA locally-run, read-only MCP server that lets an LLM client diagnose a self-hosted *arr media stack by aggregating across Sonarr, Radarr, Prowlarr, qBittorrent, Tdarr, and Profilarr.53 PyPIApache 2.0
- FlicenseNot gradedqualityCmaintenanceLets an LLM client monitor devices, services, disk usage, and uptime in a home network and home lab.-
- AlicenseNot gradedqualityDmaintenanceLets MCP clients (Claude Code, Claude Desktop) inspect a Linux home server's health over the network: uptime, load, memory, disk, Docker containers, systemd services, journal errors, and listening ports. Read-only, bearer-token secured.MIT