MCP Hub
Back to servers

homeops-mcp

MCP server for home operations — Docker, Emby, Servarr, and more. FastAPI + Python 3.11.

glama
Updated
Feb 1, 2026

HomeOps MCP Server

Python 3.11 FastAPI License: MIT CI

A Model Context Protocol (MCP) server for home infrastructure management. Provides a unified API for Docker, Emby, and future Servarr/UniFi/CrowdSec integrations.

Built by wolffcatskyy and Claude.


We've Reinvented Contributing

Every issue in this repo is AI-Ready — structured with full context, file paths, implementation guides, acceptance criteria, and a ready-to-use AI prompt at the bottom.

Pick an issue. Copy the prompt. Paste into your AI tool. Submit a PR.

No codebase knowledge required. No onboarding docs to read. Just pick an issue and go.

Browse Issues →


Roadmap

PhaseScopeStatus
Phase 0Skeleton -- project structure, CI, Docker build, health endpointDone
Phase 1Docker + Emby adapters, API-key auth middleware, full CI pipelinePlanned
Phase 2Servarr (Sonarr/Radarr/Prowlarr), WordPress, Synology, UniFi, CrowdSec adaptersPlanned
Phase 3UI dashboard, audit logs, secrets management (Vault/SOPS), production hardeningPlanned

Quick Start

Option A -- Docker Compose (recommended)

cp .env.example .env
# Edit .env with your real values
docker compose up -d

The server will be available at http://localhost:8000.

Option B -- Run locally

# Requires Python 3.11+ and Poetry
poetry install
bash scripts/run_local.sh

Configuration

All configuration is via environment variables. Copy .env.example to .env and edit as needed.

VariableRequiredDefaultDescription
MCP_ADMIN_KEYYeschangeme-to-a-strong-random-keyAPI key for admin endpoints
LOG_LEVELNoINFOLogging level (DEBUG, INFO, WARNING, ERROR)
EMBY_URLNo(mock data)Emby server URL, e.g. http://192.168.1.100:8096
EMBY_API_KEYNo(mock data)Emby API key for authentication
DOCKER_SOCKETNounix:///var/run/docker.sockPath to Docker socket

API Endpoints

MethodPathAuthDescription
GET/healthNoHealth check -- returns {"status": "ok"}
GET/v1/docker/containersAPI KeyList Docker containers
GET/v1/docker/containers/{id}/statsAPI KeyContainer resource stats
GET/v1/emby/sessionsAPI KeyList active Emby sessions
GET/v1/emby/search?q=termAPI KeySearch Emby library
POST/v1/actions/executeAPI KeyLog action (non-destructive)

All authenticated endpoints require the X-API-Key header set to the value of MCP_ADMIN_KEY.


Security

  • Never commit real API keys or secrets. The .env file is git-ignored.
  • Only placeholder values appear in .env.example.
  • The Docker socket is mounted read-only in docker-compose.yml.
  • The container runs as a non-root user (appuser).
  • All adapter API keys are loaded from environment variables at startup and are never logged.

Architecture

HomeOps MCP uses an adapter pattern to integrate with external services:

Client Request
      |
      v
  FastAPI Router
      |
      v
  Auth Middleware  (validates X-API-Key)
      |
      v
  Adapter Layer
      |
      +---> DockerAdapter    --> Docker Engine API (socket)
      +---> EmbyAdapter      --> Emby REST API
      +---> ServarrAdapter   --> Sonarr / Radarr / Prowlarr APIs  (Phase 2)
      +---> UniFiAdapter     --> UniFi Controller API              (Phase 2)
      +---> CrowdSecAdapter  --> CrowdSec LAPI                    (Phase 2)

Each adapter:

  1. Lives in homeops_mcp/adapters/<name>_adapter.py
  2. Implements a common interface (BaseAdapter)
  3. Returns mock/demo data when the upstream service is not configured
  4. Has its own unit tests in tests/

Development

# Install all dependencies (including dev)
poetry install

# Run linter
poetry run ruff check .

# Run tests
poetry run pytest -v

# Build Docker image
docker build -t homeops-mcp .

License

MIT -- see LICENSE.

Reviews

No reviews yet

Sign in to write a review