MCPs in My Homelab: Turning Codex Into a Real Ops + Dev Copilot

Hero image for a post about MCPs in a homelab: GitHub, Home Assistant, Portainer, Proxmox, WordPress, and OpenAI Docs

I spent a couple sessions wiring up MCP (Model Context Protocol) servers in my homelab so Codex can stop guessing and start verifying: live Home Assistant entities, real Portainer containers, Proxmox nodes, GitHub issues, and even WordPress drafts with media.

TL;DR: MCPs turn Codex into a practical ops + dev copilot. I can ask “what’s running?”, “does this entity exist?”, “what issues are still open?”, and “create a draft post with a hero image” — and get answers backed by live systems.

The architecture (high level)

Windows workstation

Where the IDE runs. Holds global Codex config + AGENTS.md conventions.

Codex appliance (docker_69)

A small Linux container that hosts “heavy” MCP servers and exposes them back to the IDE via SSH stdio.

Home Assistant (docker_10)

Runs the official Home Assistant MCP server so Codex can validate entities/services and query state.

MCPs we implemented

MCPWhat it gives CodexRuns where
openaiDeveloperDocsAuthoritative OpenAI API / Codex docs lookupsHosted (OpenAI)
githubIssues/PRs/repo metadata (real triage + cleanup)Hosted (GitHub)
homeassistantEntity + service validation, live state lookupsdocker_10 (Home Assistant)
portainerList/manage environments, stacks, containerscodex_appliance (docker_69)
proxmoxInspect/manage nodes, VMs, LXCscodex_appliance (docker_69)
wordpressDraft-only posts + media uploadscodex_appliance (docker_69)

Why this makes Codex better (real examples)

1) GitHub issue hygiene: list open issues, spot quick wins, close stale items

Instead of guessing what’s worth doing, Codex can query GitHub issues directly and group them into:

  • Code-only / MCP-assisted (good targets)
  • Hardware / house work (not code-only)
  • Stale / no longer relevant (close with a note)

Example prompt (what I actually ask Codex):

Show open issues in CCOSTAN/Home-AssistantConfig.
Which are code-only vs. hardware/house?
Which should we close as no longer needed?

From the current open list, some code-only / MCP-assisted candidates include:

  • #1539 Create Portainer dashboard + automations (now much easier with Portainer MCP).
  • #1517 Create Proxmox dashboard (now much easier with Proxmox MCP).
  • #1547 Circuit Panel app improvements (service/app work).

And some that are not code-only (blocked on real-world work):

  • #1548 Replace Nest Protects (hardware lifecycle + install).
  • #1518 Backup internet (hardware + network changes).

2) Home Assistant safety: validate entities/services before changing YAML

Before touching automations/scripts, Codex can query Home Assistant to confirm entity IDs exist and services are valid. This reduces typos and “it failed because the name was wrong” loops.

3) Infra as context: Portainer + Proxmox MCPs

  • Confirm where a service runs and what it’s called (environments, stacks, containers).
  • Inspect VM/LXC inventory and node status quickly.
  • Turn “go click around” ops work into a single verified conversation.

4) Blogging workflow: WordPress drafts + media uploads

The WordPress MCP is draft-only on purpose: it lets me iterate safely. It can upload images and set a featured image, but I also prepend the hero image inline because some themes don’t display featured images consistently on the front-end.

Snippets from AGENTS.md (how we keep Codex on the rails)

## MCP Servers (This Machine)
- openaiDeveloperDocs: OpenAI/Codex docs and reference.
- github: issues/PR/repo metadata.
- homeassistant: entity/service validation and state lookups.
- portainer: Docker via Portainer (runs in codex_appliance).
- proxmox: VM/LXC management (runs in codex_appliance).
- wordpress: draft-only posts/media (runs in codex_appliance).
MCP placement: if an MCP needs installed dependencies,
host it in docker_69/codex_appliance and expose it to the IDE via SSH stdio.

What I want to improve next

  • Better visuals by default: Gutenberg blocks, tables, callouts, and an inline hero image every time.
  • Auto-summarize issue lists: a repeatable “triage” prompt that labels quick wins and stale items.
  • Media workflow: generate hero + in-post diagrams, upload, set alt text, and insert at the right spot automatically.

Draft generated with help from Codex + MCP servers running in my homelab.

TAGS