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-mcpb2un0/esphome-mcpjrigling/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.mdmodels/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_configurationupdate_device 会将此报告为 COMPILED, FLASH DEFERRED——而非成功。

Related MCP server: websocat-mcp

配置

配置通过环境变量进行(12-factor)。将 .env.example 复制为 .env

变量

必需

说明

ESPHOME_DASHBOARD_URL

仪表盘基础 URL,例如 https://esphome.example.comhttp://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 HTTPhttp://<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

A
license - permissive license
Not graded
quality - not tested
A
maintenance

Maintenance

Maintainers
1hResponse time
4wRelease cycle
3Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • MCP server wrapping the Tesla Fleet API and TeslaMate API

  • Remote MCP server for RunComfy Serverless API (ComfyUI): deployments and async inference.

  • A TypeScript MCP server for Home Assistant, enabling programmatic management of entities, automati…

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/loryanstrant/ESPHome-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server