ESPHome MCP
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 中修复——参见更新日志。
工具
工具 | 功能说明 |
| 列出已配置的设备 |
| 是否有可用的固件更新? |
| 在线/离线状态 + 地址 |
| 已部署版本与当前版本对比 |
| 读取设备的 YAML |
| 保存 YAML(然后自动校验) |
| 完整的 ESPHome 校验,不保存 |
| 为已安装的 ESPHome 改写旧版 YAML 键(默认试运行) |
| 在所有设备的 YAML 中搜索字符串 |
| 流式查看设备最近的日志 |
| 实时连通性探测(DNS、mDNS、ping) |
| 将崩溃回溯解码为源代码位置 |
| 某个版本的组件 schema |
| 编译 + OTA 烧录(破坏性操作) |
| 重新编译 + OTA 烧录到最新版本(破坏性操作) |
离线设备。 如果设备离线,仪表盘会编译固件并准备好在设备下次上报时烧录。
install_device_configuration和update_device会将此报告为COMPILED, FLASH DEFERRED——而非成功。
Related MCP server: websocat-mcp
配置
配置通过环境变量进行(12-factor)。将 .env.example 复制为 .env:
变量 | 必需 | 说明 |
| 是 | 仪表盘基础 URL,例如 |
| 否 | 仪表盘用户。如果仪表盘报告 |
| 否 | 仪表盘密码。 |
| 否 |
|
使用 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。
This server cannot be installed
Maintenance
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
- AlicenseAqualityCmaintenanceMCP server for full Home Assistant control, enabling AI agents to manage dashboards, automations, files, apps, entities, and more via REST API, WebSocket, and SSH.66116MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for WebSocket operations, enabling connect, send, receive, and manage WebSocket connections and servers.MIT
- FlicenseNot gradedqualityDmaintenanceEnables monitoring and management of tasks via WebSocket events and authorization requests through MCP tools.
- FlicenseNot gradedqualityBmaintenanceEnables control of external Home Assistant devices via an MCP control layer and frontend system page.
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…
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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