homelab-mcp
Provides read-only visibility into AdGuard, including status, statistics, top clients, top domains, and query logs.
Provides read-only visibility into Grafana, including listing dashboards, retrieving a dashboard, listing alerts, and checking Grafana health.
Provides read-only visibility into InfluxDB, including listing buckets, measurements, field keys, and fetching latest values without running arbitrary Flux queries.
Provides read-only visibility into Proxmox VE, including listing nodes and guests, checking guest status, and retrieving node resource usage.
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-mcpwhich VMs are using the most memory?"
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
A small Model Context Protocol server that gives an MCP client (Claude Desktop, Claude Code, or any other) read-only visibility into homelab infrastructure: Proxmox VE, NetBox, and systemd services over SSH, with more backends to come.
Status: v1.0.0. 8 adapters, 28 read-only tools. See
docs/DESIGN_SPEC.md.
Why
Asking an assistant "is the reverse-proxy container up?" or "which VMs are
using the most memory?" should be one clean tool call, not a reconstructed
curl … | jq. This server turns each backing system into a handful of typed,
documented, read-only tools.
Related MCP server: mcp-homelab
The read-only guarantee
Every tool only reads state. No adapter may register a tool whose name begins
with a state-changing verb (restart, delete, set, …). This is enforced in
three places: in the registry at startup, by a unit test over the real adapter
set, and by scripts/check_no_write_tools.py in CI. If you want an assistant to
act, that belongs in a separate, deliberately-scoped server — not this one.
Install
pipx install homelab-mcp # or: uv tool install homelab-mcpConfigure
cp homelab-mcp.example.toml homelab-mcp.toml
$EDITOR homelab-mcp.tomlSecrets are never stored in the file. A field ending in _env names an
environment variable; the value is read from the environment at startup.
export NETBOX_TOKEN=... # matches token_env in the config
homelab-mcp doctor -c homelab-mcp.toml # probe every enabled adapterRun
homelab-mcp run -c homelab-mcp.tomlTransports — your choice
stdio(default) — no network port; the MCP client spawns the server as a subprocess. Register it with your client the usual way, e.g. for Claude Code:claude mcp add homelab -- homelab-mcp run -c /path/to/homelab-mcp.tomlstreamable-http(and legacysse) — for when the client runs on a different host. Settransport,host,port,http_pathin the config (or pass--transport/--host/--port), and bind to a LAN or VPN address only — never a public interface.build_http_app()also returns the raw Starlette app if you'd rather host it behind your own ASGI server.homelab-mcp run -c homelab-mcp.toml --transport streamable-http --host 192.0.2.10 --port 9000
Adapters
Adapter | Tools |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
The influxdb adapter never runs model-supplied Flux — every query is built
from validated bucket / measurement / field / tag parts. The http_json
adapter can only fetch endpoints named in the config, never an arbitrary URL.
Develop
uv sync
uv run pytest
uv run ruff check .
uv run mypy
uv run python scripts/check_no_write_tools.py
git config core.hooksPath .githooks # once per clone — privacy pre-push hookLogging goes to stderr; set the level with [server].log_level in the config
or --log-level. See docs/PRIVACY.md before pushing anything public.
License
GNU Affero General Public License v3.0 or later (AGPL-3.0-or-later). See
LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
Read-only MCP access to a documented IT fleet: state, changes, posture. 15 tools.
An MCP server that provides read access to your cloud storage providers, bank accounts and more.
Read-only MCP server for turva.dev's published service catalog, pricing and contact details. Five tools return JSON, including dated agent-readiness and security evidence with verification links. Connect over Streamable HTTP without an API key. The server answers questions about turva.dev and does not scan other websites or run audits.
Personal assistant MCP server with search, execute, packages, jobs, secrets, and integrations.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceAn MCP server that enables querying logs and metrics from Graylog, Prometheus, and InfluxDB 2.x. It provides tools for executing Lucene log searches, PromQL queries, and Flux queries directly within MCP-compatible clients.MIT
- 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
- AlicenseNot gradedqualityCmaintenanceRead-only MCP server to inspect allowlisted Docker containers, systemd services, JSONL logs, and HTTP health endpoints without arbitrary shell access.MIT
- AlicenseNot gradedqualityFmaintenanceRead-only MCP server exposing one Muninn Minecraft backend's capabilities via safe, capability-aware tools. Broadly covers server status, CoreProtect lookups, Paper, CMI, and WorldGuard queries.MIT