Control and Manage Home Assistant with Natural Language
Face it, we all need help managing our HA setups. There’s always that gap between what you have in mind and the time it takes to actually implement it.
I built a bridge that lets your favorite LLM tool control Home Assistant directly… not just to turn lights on and off, but to modify your automations.
It’s called an MCP Server - Model Context Protocol
You tell it:
“Pause the evening music automation for 3 days” → it disables the automation and adds an automation to turn it back on later.
“The automation when I come home doesn’t work anymore, check what’s going on” → it finds the bug and proposes a fix with improved edge case handling.
“Reduce backyard sprinkler time when humidity is high” → it modifies that weird formula you came up with last spring.
Next for me: Convert it to an HA addon and try to integrate it with Assist.
I tested all available MCP servers for Home Assistant and noticed they aren’t quite optimized for daily use with language models. I wanted to push the limits of what an AI agent can do. For example, there was no tool for “fuzzy search” of entities — with this one, you don’t need the exact word to find entities, which gives much better results in everyday use.
For the same goal, I optimized several tool descriptions to “nudge” the LLM agent to use the right tools in the right sequence.
Also, the coverage of the native MCP server is still limited — for example, it doesn’t yet allow managing automations. My current goal is to build a fully independent MCP server, but in the future, once the native one becomes more mature, I plan to make them work together: the native MCP will host the basic and stable tools, while mine will focus on edge and advanced tools with this opinionated nudging.
I’ll update my roadmap (see the GitHub wiki) to make this clearer.
These all sound like potentially great contributions to the native MCP server integrations. What’s the motivation to develop them as a standalone custom integration?
For now, I like it as a separate project. There is a learning curve to Core development that I’m not willing to invest in as this is a weekend project.
I kind of tried, but just cloning the Core repo took 1h on my laptop
Beside, as I said, I want to push the limits and that’s not in line with Core.
I published under MIT licence if someone wants to copy some parts or ideas to Core or elsewhere.
I’ve been using this extensively since you made it available, its added real value to me and how I use Home Assistant. Its also saved me a significant amount of time. I just wanted to say a massive thank you.
Trying to get it up and running, but have some issues:
Installed as add on into my HA VM. Installation seems to complete ok, however I do not see add-on in the list of installed ones.
Accessing once again add-on installation screen I can get to add-on configuration screen though and there I see it being installed already and running. After checking log I can see that it should be available under http://0.0.0.0:9583/private_redacted. So it is not showing HA address, where I’d expect it to be exposed.
However after changing the URL to HA IP it seems to respond, though with error:
It might be due to attempt of connecting from the web browser, though, so I assume it is working OK.
As instructed I added mcp-proxy (how to verify installation is properly concluded?).
I tried to configure Claude Desktop to connect adding to its configuration file (claude_desktop_config.json on Mac):
Oh wow this is a very slick interface! Not sure how I missed it but ty for sharing it with me. Quick look over instructions seem reasonable. Will give it a try this weekend.
I started to use this add-on some time ago in different configurations (locally with LMstudio on Mac, with ChatGPT desktop app on Mac and Windows, though never succeeded to configure it to work with Claude desktop). AWESOME!
There are few things that bothers me at this stage, that I found to be limiting factor somehow; firstly it seems that getting configuration for helpers is limited to those configured via UI. If configured via YAML these are not visible to MCP. Secondly seems ha_config_list_automations is missing, that also prohibits AI from properly judging current system configuration. I know it is growing rapidly (hard to keep with every update, as there are several per day ), so I hope to see these soon!
Anyhow, this is excellent work, @Jid !
EDIT: Just noticed new guides for configuration for specific environment. So I tried again Claude and it it does not work even for demo config. I get errors:
UI-only for now. I’m looking of ways to edit yaml files, but it’s not ready yet.
I made the choice to not have list_automation tool since there is a search entity tool that can be used with the automation domain. maybe it`s not working with your setup. let me know.
to debug your problem on Claude Desktop, I would need the logs.
Clear the folder ~/Library/Application Support/Claude/Logs
Restart Claude Desktop
Make a copy of the Logs folder and ~/Library/Application Support/Claude/claude_desktop_config.json
you can remove any sensitive information.
zip and send to [email protected]
I really wish I had found this before I hit my Claude limit this evening. Looking forward to testing it out!
Just curious, are there any best practices or quick reverting steps for managing changes made by Claude that don’t go as expected?
e.g. run a backup first, do some sort of version control saving for automations created or adjusted.
I’m thinking along the lines of revising and testing existing automations that could be improved…but avoiding a situation where it’s difficult to revert without significant data loss.
You can ask for a backup since I implement a tool for that (it uses the one that is fast, without the sensor history).
However, I find that I never use the backup feature. Claude or Gemini read automations before they modify… So they call rollback by using the old definition… Just ask to rollback what they did.
An other reason I don’t use it… I have my daily backups to save me as a last resort.
For you use case, I would just ask to create new versions and disable the old one.
You could also keep a copy of your last backup as reference. If you need to get back the old vets on, you can ask Claude (or ideally Claude Code) to extract your automation from the backup.
Version control would be nice, but maybe as a general feature for Home Assistant… Not specific to this MCP server.
With that said, I’ve encountered a potential issue with the ha_assign_label tool where it replaces all existing labels instead of adding new ones. After multiple correction attempts, it corrupted my entity registry and caused the label UI to completely disappear from affected automations.
I’ve filed a detailed bug report with environment diagnostics here:
ha_assign_label replaces all labels rather than adding to existing ones
Repeated API calls (5+) on same entities can corrupt the entity registry
Label UI disappears but sorting by labels still works (backend vs frontend issue)
Recovery requires duplicating and recreating entities
Question about ha_bug_report tool:
I noticed that the ha_bug_report tool returns a different template format than what’s shown in the GitHub issue template. The tool generates sections like “Bug Summary”, “What happened”, “What you expected”, while the GitHub template uses “Bug Type”, “Bug Description”, “Expected vs Actual Behavior”. Should the tool template be updated to match the GitHub format, or is there a reason for the difference?
Also, is this the right place to report this issue, or is it really an API issue? Please let me know if you need anything else for troubleshooting.