ESPHome MCP
ESPHome MCP
Un servidor MCP para el panel ESPHome 2026.6+ "Device Builder". Permite que un cliente MCP (Claude, etc.) liste dispositivos, lea/edite/valide el YAML de los dispositivos, transmita registros y compile/grabe firmware, usando el nuevo protocolo de comandos WebSocket del panel.
Por qué existe este fork. ESPHome 2026.6 reemplazó la API HTTP heredada del panel por un único protocolo de comandos WebSocket. Los servidores MCP existentes (
kdkavanagh/esphome-mcp,b2un0/esphome-mcp,jrigling/esphome-mcp-integration) hablan todos el protocolo antiguo, por lo que leer/editar/validar la configuración devuelve basura contra un servidor 2026.6. Este proyecto conserva la capa de herramientas limpia dekdkavanagh/esphome-mcpy reescribe el transporte para el nuevo protocolo. ConsultaDECISIONS.mdpara los detalles.
Versiones del panel. Device Builder se distribuye desde
esphome/device-buildercon su propio ritmo de lanzamiento, por lo que suserver_versiones independiente de la versión de ESPHome: 2026.8.0 incluye Device Builder 1.12.x, 2026.7.3 incluye 1.7.0. Este servidor está escrito para el protocolo 1.12.x y recurre a la forma de dispositivo anterior a la 1.5.0 cuando difieren. Su referencia de protocolo sondocs/API.mdymodels/devices.pyde ese repositorio.
¿Actualizando desde 2026.06.0? En ESPHome 2026.7 o superior informaba de todos los dispositivos como
unknownsin versión desplegada, y podía informar de una instalación correcta para firmware que nunca grabó. Ambos están corregidos en 2026.08.0 — consulta el registro de cambios.
Herramientas
Herramienta | Qué hace |
| Inventariar los dispositivos configurados |
| ¿Hay una actualización de firmware disponible? |
| En línea/desconectado + dirección |
| Versión desplegada vs. actual |
| Leer el YAML de un dispositivo |
| Guardar YAML (y luego validar automáticamente) |
| Validación completa de ESPHome, sin guardar |
| Reescribir claves YAML heredadas para el ESPHome instalado (prueba en seco por defecto) |
| Buscar una cadena en el YAML de todos los dispositivos |
| Transmitir registros recientes del dispositivo |
| Sonda de conectividad en directo (DNS, mDNS, ping) |
| Decodificar un backtrace de fallo en ubicaciones de código fuente |
| Esquema de componentes para una versión |
| Compilar + grabar por OTA (destructivo) |
| Recompilar + grabar por OTA a la última versión (destructivo) |
Dispositivos sin conexión. Si un dispositivo está sin conexión, el panel compila el firmware y lo prepara para grabarlo en la próxima conexión del dispositivo.
install_device_configurationyupdate_devicelo informan comoCOMPILED, FLASH DEFERRED, no como éxito.
Related MCP server: Home Assistant MCP Control
Configuración
La configuración se realiza mediante variables de entorno (12 factores). Copia .env.example a .env:
Variable | Obligatoria | Descripción |
| sí | URL base del panel, p. ej. |
| no | Usuario del panel. Obligatorio si el panel informa de |
| no | Contraseña del panel. |
| no |
|
Ejecutar con Docker
cp .env.example .env # then edit ESPHOME_DASHBOARD_URL
docker compose up -d --build
docker compose ps # STATUS should become "healthy"El servidor escucha en :8080 y sirve MCP a través de Streamable HTTP en http://<host>:8080/mcp. El HEALTHCHECK del contenedor realiza un handshake MCP completo y llama a list_device_names, por lo que solo informa de estado saludable cuando el panel es realmente accesible.
Una vez publicada la imagen del registro, fíjala en compose.yaml:
image: ghcr.io/loryanstrant/esphome-mcp:latestConectar un cliente MCP
Apunta tu cliente al endpoint de Streamable HTTP:
{
"mcpServers": {
"esphome": { "type": "http", "url": "http://<host>:8080/mcp" }
}
}Para un cliente stdio, ejecuta esphome-mcp (en lugar del punto de entrada web) con el mismo entorno.
Desarrollo
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 liveCréditos
Este proyecto se apoya en el trabajo de otros (todos con licencia MIT):
kdkavanagh/esphome-mcp — el servidor MCP original de ESPHome. Este fork conserva su capa de herramientas FastMCP, el manejo de esquemas, el empaquetado y la CI casi palabra por palabra; la reescritura del transporte es el cambio principal aquí.
b2un0/esphome-mcp — por publicar una imagen precompilada y sacar a la luz la rotura del healthcheck / las herramientas de configuración que motivó este trabajo.
jrigling/esphome-mcp-integration — una integración de Home Assistant consultada al mapear el protocolo del panel de ESPHome.
El nuevo protocolo WebSocket 2026.6 se obtuvo mediante ingeniería inversa del front-end de ESPHome Device Builder y se verificó contra un panel 2026.6 en directo.
Licencia
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-