Home Assistant + Claude via MCP

Home Assistant + Claude via MCP

AI is here. Regardless of how you feel about it, your daily life is already being impacted by AI in some form. I use it daily for work and for personal projects. It is becoming more natural as part of my workflow. Used properly, it can be a great assistant to make one more productive.

Be sure to watch my video on this topic!

Watch

When it comes to Home Assistant, AI can be that great assistant. The Home Assistant team is making great strides in making configuration much easier via the UI. However, there are still opportunities for complexity simply because the number of integrations is massive. Not everything can be neatly packaged into the UI from a configuration point of view. Not only that, but complex automations are still complex. It really comes down to imagination and what one wants to accomplish.

AI can help in many of these cases and that is the focus of this article. Using an MCP server and, in my case Claude Code, I demonstrate some of the advantages of having an AI assistant for Home Assistant.


Installing the ha-mcp app in Home Assistant

Let's start with the MCP server. It is probably helpful to define an MCP server. If you do a quick search, you'll likely see a definition similar to this.

The MCP server is the external service that provides context, data, or capabilities to the LLM. It helps LLMs by connecting to external systems like databases and web services, translating their responses into a format the LLM can understand which helps developers provide diverse functionalities.

So an an MCP server is a bridge between an LLM and a service such as Home Assistant.

Home Assistant has an MCP server integration that allows you to control entities. That's not quite enough for what I want to do. For that reason, I use ha-mcp, which is a standalone server built for configuring, building, and debugging your smart home, not just controlling it.

I should stop here and just state the obvious.

💡
You are opening your Home Assistant instance to an LLM. Claude, by default, asks for permission to do specific tasks but there is a potential to do bad things if you don't pay attention to what is happening. You need to understand what you are asking AI to do and make sure it doesn't destroy things in the process. ALWAYS have backups of your Home Assistant instance before having AI do things, just in case!

Now that you have been warned, let's start by installing the MCP server. In Home Assistant, you will navigate to Settings->Apps and then click the "Install App" button in the bottom right of the window. From there, click the 3 dots in the top right and click Repositories.

Click the Repositories link in the app store

This will bring up a list of the custom repositories you have installed. Click the blue "Add" button. There you will paste in the ha-mcp repo:

https://github.com/homeassistant-ai/ha-mcp

Once you have that installed, go back to the app store and search for mcp. You will see a list of servers under Home Assistant MCP Server. Choose the "Home Assistant MCP Server" to install, not the dev or webhook versions.

Choose the Home Assistant MCP Server for install after searching for mcp

Of course, you can always click the Add APP to Repository button from the ha-mcp github page for an easier install experience.

Once you install and start the app, check the log tab to get your private URL. Keep this handy as you will need it to configure your LLM of choice.

Log showing the private URL to connect your LLM to ha-mcp

Configuring your LLM


Now you need to choose your LLM. The author of ha-mcp has provided a very nice setup guide for most LLMs. I wasn't aware of this page when I first started so I just ran a command directly in Claude Code to make Claude aware of the MCP server on my Home Assistant instance.

claude mcp add-json home-assistant '{
  "url": "http://172.31.10.3:9583/private_your_url",
  "type": "http"
}'

To be honest, there are so many LLMs and so many different configuration options it can be quite confusing. ha-mcp has another page for a quick start that differs from how connectivity is done using the private URL. The method I am using works well so I will stick with it for now.


Using ha-mcp


I will only scratch the surface of possibilities as there are so many ways to use ha-mcp and Home Assistant.

Let's get started by making sure Claude can actually see your Home Assistant instance. For this, we will just ask. The answer should be yes with info about your instance.

Can you see my Home Assistant instance?

Yes, I can see your Home Assistant instance! Here's a quick summary:

- **Version:** 2026.6.1
- **Location:** Home (America/Chicago timezone)
- **Status:** Running
- **Entities:** 4,980 across 45 domains
- **Areas:** 16
- **Services:** 515

The new HTTP connection is working great. What would you like to do?

Once you have connected, it's just a matter of doing things. As an example, I did some troubleshooting of my FP300 sensor as it relates to turning on lights in the garage. I started with a simple prompt.

Check my Home Assistant instance and tell me why the garage motion sensor fp300 is no longer working. Check the entities as well to see if that device is offline.

The full response is too long for this blog post, so I'll post a small snippet just to show it is working. What's nice is that is shows the tools it used to actually accomplish the task.

Claude Code response to my question about the FP300

This is the diagnostic response I received.

Results of my query about the FP300 sensor in Home Assistant

Here is another query I made asking to compare the sensor against the automation runs that should be triggered by that sensor.

Query asking for comparison between fp300 detections and automation triggering

Ok. So I wanted a way to know if that sensor was somehow going offline and that is why it didn't trigger the automation in some cases. So I asked.

Based on that response, I asked Claude to create an automation for me.

...and it did. Expanding the tools used section, you can see the whole automation configuration. Claude even mentioned a trigger warning and gave an explanation why it kept it anyway. Nice touch.

From a maintenance perspective, asking to look over your Home Assistance instance is a helpful task.

Asking Claude to check my Home Assistant for issue

The results were surprising and quite long. It's nice that the issues were grouped by severity. We can ignore frigate because I don't run that on HA even though it is installed. I need to remove it since Frigate runs stand-alone on another server. The rest are things I should take a look at.

Partial list of returned results from a health check of my Home Assistant instance

The next thing I wanted to try is to build a dashboard. I don't know that I would use Claude to do this but I wanted to see what it would produce for a simple prompt.

Prompt for creating a simple dashboard for lights and switches

One thing you will notice while building the dashboard is use of the home-assistant-best-practices skill. This is an important piece in order to allow Claude to follow best practices.

Output of the request to build a simple dashboard

Here is what the dashboard looks like on the first run. If I were to continue to use Claude to build this out, I would need to spend a bit of time tweaking things as this is very basic in its current form. I also see it put a few switches into the incorrect areas, which is something I would handle on subsequent prompts.

Lights and Switches Dashboard

HA-MCP Settings

If you open the webui for ha-mcp, you will see quite a few settings broken down into sections.

ha-mcp sections

In the tools section, each of the 86 (as of this writing) tools can be enabled/disabled, pinned, and security gated. This allows fine grained control of what the LLM can do

Tool controls

Server Settings allows you to enable or disable server wide tool search as well as other beta features.

Server Settings

Under Backups, you can set how you want to handle backing up configs before edits. This is useful in case you need to restore back to before the LLM made an edit.

Backup settings for edits

Tool Security Policies allow you to control what happens to tools you set to security gated. This is also where you can approve pending tools. This is another layer of security.

Tool Security Policies

There is so much more you can do with ha-mcp and Home Assistant. Fixing issues, troubleshooting sensors, creating automations. These are all just the tip of the iceberg.