Skip to main content
Glama

ESPHome MCP

MCP-сервер для панели управления ESPHome 2026.6+ «Device Builder». Он позволяет MCP-клиенту (Claude и др.) просматривать список устройств, читать/редактировать/проверять YAML устройств, транслировать логи и компилировать/прошивать прошивку — используя новый протокол WebSocket-команд панели управления.

Почему существует этот форк. ESPHome 2026.6 заменил устаревший HTTP API панели управления единым протоколом WebSocket-команд. Существующие MCP-серверы (kdkavanagh/esphome-mcp, b2un0/esphome-mcp, jrigling/esphome-mcp-integration) все используют старый протокол, поэтому чтение/редактирование/проверка конфигурации возвращают мусор при работе с сервером 2026.6. Этот проект сохраняет чистый слой инструментов из kdkavanagh/esphome-mcp и переписывает транспорт для нового протокола. Подробности см. в DECISIONS.md.

Версии панели управления. Device Builder поставляется из esphome/device-builder по собственному графику выпуска, поэтому его server_version не зависит от версии ESPHome — 2026.8.0 поставляется с Device Builder 1.12.x, 2026.7.3 — с 1.7.0. Этот сервер написан для протокола 1.12.x и использует форму устройства до 1.5.0 в тех местах, где они различаются. В качестве справочника по протоколу используются docs/API.md и models/devices.py из этого репозитория.

Обновляетесь с 2026.06.0? На ESPHome 2026.7 или новее он показывал каждое устройство как unknown без развёрнутой версии и мог сообщить об успешной установке прошивки, которую на самом деле не прошивал. Обе проблемы исправлены в 2026.08.0 — см. журнал изменений.

Инструменты

Tool

Что делает

list_devices / list_device_names

Перечень настроенных устройств

check_device_update

Доступно ли обновление прошивки?

get_device_status

Онлайн/офлайн + адрес

get_device_version

Развёрнутая и текущая версия

get_device_configuration

Чтение YAML устройства

edit_device_configuration

Сохранение YAML (с последующей автоматической проверкой)

validate_device_configuration

Полная проверка ESPHome без сохранения

migrate_device_configuration

Переименование устаревших ключей YAML под установленный ESPHome (по умолчанию пробный прогон)

search_device_configurations

Поиск строки в YAML всех устройств

get_device_logs

Потоковая передача последних логов устройства

troubleshoot_device

Живая проверка подключения (DNS, mDNS, ping)

decode_device_backtrace

Декодирование backtrace сбоя в исходные позиции

get_esphome_schema

Схема компонента для версии

install_device_configuration

Компиляция + OTA-прошивка (разрушающее действие)

update_device

Перекомпиляция + OTA-прошивка до последней версии (разрушающее действие)

Офлайн-устройства. Если устройство офлайн, панель управления компилирует прошивку и подготавливает её к прошивке при следующем обращении устройства. install_device_configuration и update_device сообщают об этом как COMPILED, FLASH DEFERRED — а не об успехе.

Related MCP server: Home Assistant MCP Control

Конфигурация

Конфигурация задаётся через переменные окружения (12-factor). Скопируйте .env.example в .env:

Переменная

Обязательная

Описание

ESPHOME_DASHBOARD_URL

да

Базовый URL панели управления, например https://esphome.example.com или http://host:6052. REST и WebSocket URL выводятся из него.

ESPHOME_DASHBOARD_USERNAME

нет

Пользователь панели управления. Обязателен, если панель сообщает requires_auth=true — без него каждая команда завершается ошибкой not_authenticated.

ESPHOME_DASHBOARD_PASSWORD

нет

Пароль панели управления.

LOG_LEVEL

нет

DEBUG/INFO/WARNING/ERROR (по умолчанию INFO).

Запуск с Docker

cp .env.example .env       # then edit ESPHOME_DASHBOARD_URL
docker compose up -d --build
docker compose ps          # STATUS should become "healthy"

Сервер слушает порт :8080 и предоставляет MCP через Streamable HTTP по адресу http://<host>:8080/mcp. Контейнерный HEALTHCHECK выполняет полное MCP-рукопожатие и вызывает list_device_names, поэтому он сообщает о здоровом состоянии только тогда, когда панель управления действительно доступна.

Когда образ реестра будет опубликован, зафиксируйте его в compose.yaml:

image: ghcr.io/loryanstrant/esphome-mcp:latest

Подключение MCP-клиента

Направьте вашего клиента на конечную точку Streamable HTTP:

{
  "mcpServers": {
    "esphome": { "type": "http", "url": "http://<host>:8080/mcp" }
  }
}

Для stdio-клиента запустите esphome-mcp (вместо веб-точки входа) с теми же переменными окружения.

Разработка

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 live

Благодарности

Этот проект опирается на работы других авторов (все под лицензией MIT):

  • kdkavanagh/esphome-mcp — оригинальный MCP-сервер ESPHome. Этот форк сохраняет его слой инструментов FastMCP, обработку схем, упаковку и CI почти без изменений; основное изменение здесь — переписанный транспорт.

  • b2un0/esphome-mcp — за публикацию готового образа и выявление поломки healthcheck / инструментов конфигурации, которая мотивировала эту работу.

  • jrigling/esphome-mcp-integration — интеграция Home Assistant, использованная как справочник при изучении протокола панели управления ESPHome.

Новый протокол WebSocket 2026.6 был восстановлен из фронтенда ESPHome Device Builder и проверен на живой панели управления 2026.6.

Лицензия

MIT.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    C
    maintenance
    MCP server for full Home Assistant control, enabling AI agents to manage dashboards, automations, files, apps, entities, and more via REST API, WebSocket, and SSH.
    66
    96 npm
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI assistants to manage ESPHome devices by listing, inspecting, editing, validating, compiling, and flashing firmware over-the-air via the ESPHome WebSocket API.
    17
    MIT
  • F
    license
    Not graded
    quality
    A
    maintenance
    Enables 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
    -