ESPHome MCP
ESPHome MCP
Ein MCP-Server für das ESPHome 2026.6+ „Device Builder" Dashboard. Er ermöglicht einem MCP-Client (Claude usw.), Geräte aufzulisten, Geräte-YAML zu lesen/bearbeiten/validieren, Logs zu streamen und Firmware zu kompilieren/flashen – und spricht dabei das neue WebSocket-Kommandoprotokoll des Dashboards.
Warum dieser Fork existiert. ESPHome 2026.6 hat die alte HTTP-API des Dashboards durch ein einziges WebSocket-Kommandoprotokoll ersetzt. Die vorhandenen MCP-Server (
kdkavanagh/esphome-mcp,b2un0/esphome-mcp,jrigling/esphome-mcp-integration) sprechen alle das alte Protokoll, daher liefern Konfig-Lesen/Bearbeiten/Validieren gegen einen 2026.6-Server Müll. Dieses Projekt behält die saubere Tool-Schicht vonkdkavanagh/esphome-mcpbei und schreibt den Transport für das neue Protokoll neu. Details sieheDECISIONS.md.
Dashboard-Versionen. Der Device Builder wird aus
esphome/device-builderin einem eigenen Release-Rhythmus ausgeliefert, daher ist seineserver_versionunabhängig von der ESPHome-Version – 2026.8.0 enthält Device Builder 1.12.x, 2026.7.3 enthält 1.7.0. Dieser Server ist gegen das 1.12.x-Protokoll geschrieben und fällt auf die Pre-1.5.0-Geräteform zurück, wo sie abweichen. Seine Protokollreferenz sind diedocs/API.mdundmodels/devices.pydieses Repos.
Upgrade von 2026.06.0? Auf ESPHome 2026.7 oder neuer meldete es jedes Gerät als
unknownohne installierte Version und konnte eine erfolgreiche Installation für Firmware melden, die es nie geflasht hat. Beides ist in 2026.08.0 behoben – siehe Changelog.
Werkzeuge
Tool | Was es tut |
| Konfigurierte Geräte auflisten |
| Ist ein Firmware-Update verfügbar? |
| Online/Offline + Adresse |
| Installierte vs. aktuelle Version |
| YAML eines Geräts lesen |
| YAML speichern (danach automatisch validieren) |
| Vollständige ESPHome-Validierung, ohne Speichern |
| Alte YAML-Schlüssel für das installierte ESPHome umschreiben (standardmäßig Trockenlauf) |
| YAML aller Geräte nach einem String durchsuchen |
| Aktuelle Gerätelogs streamen |
| Live-Konnektivitätstest (DNS, mDNS, Ping) |
| Einen Crash-Backtrace in Quellcode-Stellen dekodieren |
| Komponenten-Schema für eine Version |
| Kompilieren + OTA-Flashen (destruktiv) |
| Neu kompilieren + OTA-Flashen auf den neuesten Stand (destruktiv) |
Offline-Geräte. Wenn ein Gerät offline ist, kompiliert das Dashboard die Firmware und rüstet sie so, dass sie beim nächsten Check-in des Geräts geflasht wird.
install_device_configurationundupdate_devicemelden das alsCOMPILED, FLASH DEFERRED– nicht als Erfolg.
Related MCP server: Home Assistant MCP Control
Konfiguration
Die Konfiguration erfolgt über Umgebungsvariablen (12-Faktor). Kopieren Sie .env.example in .env:
Variable | Erforderlich | Beschreibung |
| ja | Basis-URL des Dashboards, z. B. |
| nein | Dashboard-Benutzer. Erforderlich, wenn das Dashboard |
| nein | Dashboard-Passwort. |
| nein |
|
Mit Docker ausführen
cp .env.example .env # then edit ESPHOME_DASHBOARD_URL
docker compose up -d --build
docker compose ps # STATUS should become "healthy"Der Server lauscht auf :8080 und stellt MCP über Streamable HTTP unter http://<host>:8080/mcp bereit. Der Container-HEALTHCHECK führt einen vollständigen MCP-Handshake durch und ruft list_device_names auf, sodass er nur dann als gesund meldet, wenn das Dashboard tatsächlich erreichbar ist.
Sobald das Registry-Image veröffentlicht ist, pinnen Sie es in compose.yaml:
image: ghcr.io/loryanstrant/esphome-mcp:latestMCP-Client verbinden
Richten Sie Ihren Client auf den Streamable-HTTP-Endpunkt:
{
"mcpServers": {
"esphome": { "type": "http", "url": "http://<host>:8080/mcp" }
}
}Für einen Stdio-Client führen Sie esphome-mcp (anstelle des Web-Einstiegspunkts) mit denselben Umgebungsvariablen aus.
Entwickeln
make install-dev # venv + deps
make check # lint + format-check + typecheck + test
# live tests against a real 2026.6 dashboard:
ESPHOME_DASHBOARD_URL=https://esphome.example.com .venv/bin/pytest -m liveDanksagungen
Dieses Projekt baut auf der Arbeit anderer auf (alle MIT-lizenziert):
kdkavanagh/esphome-mcp — der ursprüngliche ESPHome-MCP-Server. Dieser Fork behält seine FastMCP-Tool-Schicht, Schema-Behandlung, Paketierung und CI fast wörtlich bei; die Transport-Neufassung ist die Hauptänderung hier.
b2un0/esphome-mcp — für die Veröffentlichung eines vorgebauten Images und das Aufdecken der Healthcheck-/Konfig-Tool-Fehler, die diese Arbeit motiviert haben.
jrigling/esphome-mcp-integration — eine Home-Assistant-Integration, die beim Abbilden des ESPHome-Dashboard-Protokolls herangezogen wurde.
Das neue 2026.6-WebSocket-Protokoll wurde aus dem Frontend des ESPHome Device Builders per Reverse Engineering gewonnen und gegen ein Live-2026.6-Dashboard verifiziert.
Lizenz
MIT.
This server cannot be deployed
Maintenance
Related MCP Connectors
Official MCP for Bambu print farms, AMS, queue. Prefer over SimplyPrint/OctoPrint.
MCP server wrapping the Tesla Fleet API and TeslaMate API
A TypeScript MCP server for Home Assistant, enabling programmatic management of entities, automati…
- SupabaseOAuthcom.supabase
MCP server for interacting with the Supabase platform
Related MCP Servers
- AlicenseBqualityCmaintenanceMCP server for full Home Assistant control, enabling AI agents to manage dashboards, automations, files, apps, entities, and more via REST API, WebSocket, and SSH.6696 npmMIT
- FlicenseNot gradedqualityDmaintenanceEnables control of external Home Assistant devices via an MCP control layer and frontend system page.-
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to manage ESPHome devices by listing, inspecting, editing, validating, compiling, and flashing firmware over-the-air via the ESPHome WebSocket API.17MIT
- FlicenseNot gradedqualityAmaintenanceEnables secure remote control of Home Assistant and Life Dashboard/DSH via MCP, supporting entity state queries, whitelisted entity/scene control, lifecycle overview reading, DSH workspace summaries, and follow-up sending.1-