ESPHome MCP
Provides tools for managing ESPHome devices: list, read/edit/validate YAML, stream logs, compile and flash firmware via the ESPHome dashboard's WebSocket protocol.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ESPHome MCPlist my configured ESPHome devices"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ESPHome MCP
An MCP server for the ESPHome 2026.6+ "Device Builder" dashboard. It lets an MCP client (Claude, etc.) list devices, read/edit/validate device YAML, stream logs, and compile/flash firmware — speaking the dashboard's new WebSocket command protocol.
Why this fork exists. ESPHome 2026.6 replaced the dashboard's legacy HTTP API with a single WebSocket command protocol. The existing MCP servers (
kdkavanagh/esphome-mcp,b2un0/esphome-mcp,jrigling/esphome-mcp-integration) all speak the old protocol, so config read/edit/validate return garbage against a 2026.6 server. This project keeps the clean tool layer fromkdkavanagh/esphome-mcpand rewrites the transport for the new protocol. SeeDECISIONS.mdfor the details.
Dashboard versions. The Device Builder ships from
esphome/device-builderon its own release cadence, so itsserver_versionis independent of the ESPHome version — 2026.8.0 ships Device Builder 1.12.x, 2026.7.3 ships 1.7.0. This server is written against the 1.12.x protocol and falls back to the pre-1.5.0 device shape where they differ. Its protocol reference is that repo'sdocs/API.mdandmodels/devices.py.
Upgrading from 2026.06.0? On ESPHome 2026.7 or newer it reported every device as
unknownwith no deployed version, and could report a successful install for firmware it never flashed. Both are fixed in 2026.08.0 — see the changelog.
Tools
Tool | What it does |
| Inventory configured devices |
| Is a firmware update available? |
| Online/offline + address |
| Deployed vs current version |
| Read a device's YAML |
| Save YAML (then auto-validate) |
| Full ESPHome validation, no save |
| Respell legacy YAML keys for the installed ESPHome (dry run by default) |
| Search every device's YAML for a string |
| Stream recent device logs |
| Live connectivity probe (DNS, mDNS, ping) |
| Decode a crash backtrace into source locations |
| Component schema for a version |
| Compile + OTA flash (destructive) |
| Recompile + OTA flash to latest (destructive) |
Offline devices. If a device is offline, the dashboard compiles the firmware and arms it to flash on the device's next check-in.
install_device_configurationandupdate_devicereport that asCOMPILED, FLASH DEFERRED— not success.
Related MCP server: websocat-mcp
Configuration
Config is via environment variables (12-factor). Copy .env.example to
.env:
Variable | Required | Description |
| yes | Dashboard base URL, e.g. |
| no | Dashboard user. Required if the dashboard reports |
| no | Dashboard password. |
| no |
|
Run with Docker
cp .env.example .env # then edit ESPHOME_DASHBOARD_URL
docker compose up -d --build
docker compose ps # STATUS should become "healthy"The server listens on :8080 and serves MCP over Streamable HTTP at
http://<host>:8080/mcp. The container HEALTHCHECK performs a full MCP handshake and
calls list_device_names, so it only reports healthy when the dashboard is actually
reachable.
Once the registry image is published, pin it in compose.yaml:
image: ghcr.io/loryanstrant/esphome-mcp:latestConnect an MCP client
Point your client at the Streamable HTTP endpoint:
{
"mcpServers": {
"esphome": { "type": "http", "url": "http://<host>:8080/mcp" }
}
}For a stdio client, run esphome-mcp (instead of the web entrypoint) with the same env.
Develop
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 liveCredits
This project stands on the work of others (all MIT-licensed):
kdkavanagh/esphome-mcp — the original ESPHome MCP server. This fork keeps its FastMCP tool layer, schema handling, packaging and CI almost verbatim; the transport rewrite is the main change here.
b2un0/esphome-mcp — for publishing a prebuilt image and surfacing the healthcheck / config-tool breakage that motivated this work.
jrigling/esphome-mcp-integration — a Home Assistant integration referenced while mapping the ESPHome dashboard protocol.
The new 2026.6 WebSocket protocol was reverse-engineered from the ESPHome Device Builder front-end and verified against a live 2026.6 dashboard.
License
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