query_entitiesLABSCO SUMMARY
The access control is finer than an on/off switch.
read_only: true in the config makes the whole thing observational, but the more useful knob is the tool filter: a blacklist takes glob patterns down to the action level, so manage_*:delete blocks deletion across every management tool while leaving creation and editing intact. That is the setting worth reaching for — full lifecycle control over automations is powerful precisely because it can also remove them. The consolidated tool count is a deliberate trade: fewer, broader tools to reduce an LLM's selection errors, at the cost of each one taking a mode argument.
What it is
A Home Assistant server written in Go that goes well past reading entity states: it creates, edits and deletes automations, scripts, scenes and helpers, queries the registries, validates configuration and reads the logbook. It uses WebSocket for most operations and the REST API for automation, script and scene changes.
What you get
- Entities —
query_entitiescovers history, statistics and health, withget_stateandanalyze_entityalongside - Registries —
get_registryplusmanage_area,manage_label,manage_floor,manage_zone,manage_person,manage_tag,manage_entityandmanage_device manage_automationis one tool for the whole lifecycle — create, read, update, delete, toggle, coverage, and both JSON Patch and semantic patchmanage_helpercovers 26 helper types, withhelper_actionto drive them;manage_scriptandmanage_scenedo CRUD plus execute and activate- Analysis —
get_entity_dependencies,analyze_targetandfind_referencesanswer what depends on what before you change it - Services —
call_serviceandlist_services; history —get_logbookwith entry correlation - Dashboards and media —
manage_dashboard,browse_media,manage_camera,sign_media_path - System —
get_system_info,validate_config,manage_update,manage_blueprint,manage_system_log,manage_hacs - Seven guidance topics are readable as resources under
skill://ha-mcp/<slug>— format selection, automation patterns, template resilience, helper selection, dashboard safety, entity renaming and debugging workflow - After a create, update or delete, the server polls state to confirm the change actually landed
Requirements
A Home Assistant instance and a long-lived access token from your profile page. Distribution is a single binary from the releases page, with RPM and DEB packages, a Docker image (docker pull zorak1103/ha-mcp:latest, port 8080, HA_URL set to your instance), or a source build needing Go 1.26 or later. Start it with --ha-url and --ha-token, or run ha-mcp init to write config.yaml and .env first. Reconnection is automatic with exponential backoff.
Setup effort
Follow the published steps — docker pull zorak1103/ha-mcp:latest
USE CASES
Writing an automation by describing it
Create it through the one automation tool, with the server confirming the state afterwards.
Changing one line of an existing automation
Apply a patch rather than rewriting the whole YAML and risking the rest.
Checking what breaks before renaming an entity
Find every reference and dependency first, then rename.
Working out why something fired at 3am
Read the logbook with correlation and the entity's history around that time.
Letting an assistant look but not change anything
Run in read-only mode, or blacklist the delete actions across the management tools.
41 tools
Listed in project docs. Your client may show a different list.
query_devicesget_stateanalyze_entityget_entity_dependenciesfind_referencesget_registrymanage_areamanage_labelmanage_floormanage_zonemanage_personmanage_tagmanage_entitymanage_devicemanage_config_entrymanage_automationmanage_helperhelper_actionmanage_scriptmanage_scenebrowse_mediasign_media_pathmanage_dashboardrender_templateget_logbookvalidate_configanalyze_targetcall_servicelist_servicesget_system_infoget_datetimemanage_hacsmanage_tracemanage_blueprintmanage_updatemanage_todomanage_calendarmanage_cameramanage_system_logget_skillBEFORE YOU INSTALL
What to know first
Tools you get
41 tools named in the project's documentation.
Requires
- Docker
- A Home Assistant instance and a long-lived access token from your Home Assistant profile page
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
Server setup
docker pull zorak1103/ha-mcp:latest
docker run -d --name ha-mcp -p 8080:8080 -e HA_URL=http://homeassistant.local:8123 zorak1103/ha-mcp:latestAdd the mcpServers block below to your AI client config
MCP Clients
Cline
{
"mcpServers": {
"ha-mcp": {
"type": "streamableHttp",
"url": "http://localhost:8080",
"headers": {
"Authorization": "Bearer <YOUR_HA_ACCESS_TOKEN>"
},
"description": "Home Assistant MCP Server"
}
}
}