Skip to main content
Glama

ESPHome MCP

一个面向 ESPHome 2026.6+ "Device Builder" 仪表盘的 MCP 服务器。它让 MCP 客户端(Claude 等)能够列出设备、读取/编辑/校验设备 YAML、流式查看日志,以及编译/烧录固件——使用仪表盘新的 WebSocket 命令协议。

为什么会有这个分支。 ESPHome 2026.6 用单一的 WebSocket 命令协议取代了仪表盘旧版 HTTP API。现有的 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 中修复——参见更新日志。

工具

工具

功能说明

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

为已安装的 ESPHome 改写旧版 YAML 键(默认试运行)

search_device_configurations

在所有设备的 YAML 中搜索字符串

get_device_logs

流式查看设备最近的日志

troubleshoot_device

实时连通性探测(DNS、mDNS、ping)

decode_device_backtrace

将崩溃回溯解码为源代码位置

get_esphome_schema

某个版本的组件 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 端口,并通过 Streamable HTTP 在 http://<host>:8080/mcp 提供 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(而不是 Web 入口点)。

开发

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 — 最初的 ESPHome MCP 服务器。本分支几乎原样保留了其 FastMCP 工具层、schema 处理、打包和 CI;传输层重写是这里的主要改动。

  • b2un0/esphome-mcp — 感谢其发布预构建镜像,并暴露了健康检查/配置工具的故障,正是这些故障促成了本项目。

  • jrigling/esphome-mcp-integration — 在梳理 ESPHome 仪表盘协议时参考的一个 Home Assistant 集成。

新的 2026.6 WebSocket 协议是从 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
    -