Homelab MCP

Homelab MCP

Provides 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.

Category
Visit Server

README

Homelab MCP

A modular MCP (Model Context Protocol) server for homelab service management. Provides unified access to multiple homelab services through a single MCP interface.

Features

  • Modular Architecture: Enable only the services you need
  • Unified Health Checks: Monitor all services from one endpoint
  • Docker Ready: Easy deployment to Unraid, Proxmox, or Kubernetes
  • Extensible: Easy to add new service integrations

Supported Services

Service Description Status
Nginx Proxy Manager Reverse proxy management, SSL certificates ✅ Ready
Pi-hole DNS ad-blocking, query stats ✅ Ready
Uptime Kuma Service availability monitoring ✅ Ready
Portainer Docker management across hosts ✅ Ready
UPS NUT UPS power monitoring ✅ Ready

Quick Start

1. Clone and Configure

git clone https://github.com/yourusername/homelab-mcp.git
cd homelab-mcp

# Copy and edit configuration
cp config.example.yaml config.yaml
# Edit config.yaml with your service URLs and credentials

2. Run with Docker

docker compose up -d

3. Run Locally (Development)

# Install dependencies
pip install -e .

# Run server
python -m homelab_mcp.main

Configuration

Edit config.yaml to enable services and configure credentials:

server:
  host: "0.0.0.0"
  port: 6971
  transport: "streamable-http"

services:
  nginx_proxy_manager:
    enabled: true
    url: "http://192.168.1.100:81"
    username: "admin@example.com"
    password: "your-password"

  pihole:
    enabled: true
    url: "http://192.168.1.53"
    api_key: "your-api-key"

  # ... more services

Available Tools

Core Tools

  • homelab_health_check - Check health of all enabled services
  • homelab_list_services - List configured services and status

Nginx Proxy Manager

  • npm_list_proxy_hosts - List all proxy hosts
  • npm_list_ssl_certificates - List SSL certificates
  • npm_get_proxy_host - Get proxy host details
  • npm_enable_proxy_host / npm_disable_proxy_host - Toggle hosts
  • npm_check_expiring_certificates - Find expiring SSL certs

Pi-hole

  • pihole_get_summary - DNS query statistics
  • pihole_get_top_queries / pihole_get_top_blocked - Top domains
  • pihole_enable / pihole_disable - Toggle ad blocking
  • pihole_get_query_types - Query type breakdown

Uptime Kuma

  • uptime_get_status_page - Get status page info
  • uptime_get_heartbeats - Monitor heartbeat data
  • uptime_get_monitor_summary - Summary of all monitors

Portainer

  • portainer_list_endpoints - List Docker environments
  • portainer_list_containers - List containers on endpoint
  • portainer_get_endpoint_stats - Container/image/volume stats
  • portainer_container_action - Start/stop/restart containers
  • portainer_list_stacks - List docker-compose stacks

UPS NUT

  • ups_get_status - Battery, load, runtime info
  • ups_get_all_variables - All UPS variables
  • ups_list_devices - List UPS devices
  • ups_check_power_status - Quick power status check

Deployment

Docker Compose (Recommended)

docker compose up -d

Unraid

  1. Copy files to /mnt/user/appdata/homelab-mcp/
  2. Build and run:
docker build -t homelab-mcp .
docker run -d --name homelab-mcp \
  -p 6971:6971 \
  -v /mnt/user/appdata/homelab-mcp/config.yaml:/app/config.yaml:ro \
  homelab-mcp

Kubernetes

apiVersion: apps/v1
kind: Deployment
metadata:
  name: homelab-mcp
spec:
  replicas: 1
  selector:
    matchLabels:
      app: homelab-mcp
  template:
    metadata:
      labels:
        app: homelab-mcp
    spec:
      containers:
      - name: homelab-mcp
        image: homelab-mcp:latest
        ports:
        - containerPort: 6971
        volumeMounts:
        - name: config
          mountPath: /app/config.yaml
          subPath: config.yaml
      volumes:
      - name: config
        configMap:
          name: homelab-mcp-config

Adding New Services

  1. Create a new directory under homelab_mcp/services/
  2. Implement ServiceBase class with:
    • _create_client() - HTTP client setup
    • register_tools() - MCP tool registration
    • health_check() - Service health check
  3. Add configuration model to core/config.py
  4. Register in server.py

MCP Client Configuration

Add to your MCP client (e.g., Windsurf):

{
  "mcpServers": {
    "homelab": {
      "serverType": "streamable-http",
      "url": "http://192.168.1.100:6971/mcp"
    }
  }
}

License

MIT

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured
E2B

E2B

Using MCP to run code via e2b.

Official
Featured