# Home Assistant (ha-mcp)

> Control and configure Home Assistant devices, states, automations, scripts and dashboards in natural language.

- Listing: https://mcp.tc/i/home-assistant
- Connect: this is a local (stdio) server; install it on your machine (see Install). The listing link is a page, not an MCP endpoint.
- Type: local (stdio)
- Auth: API key
- Category: [Automation & Integrations](https://mcp.tc/c/automation)
- Vendor: homeassistant-ai
- Homepage: <https://homeassistant-ai.github.io/ha-mcp/setup/>
- Repository: <https://github.com/homeassistant-ai/ha-mcp>
- Package: pypi `ha-mcp`

## About

An unofficial, community-built server that connects an AI assistant to a Home Assistant instance. It lets you control smart home devices, query entity states, call services and manage automations, scripts and dashboards using natural language.

It can run as a Home Assistant custom component installed through HACS, as a Home Assistant app (add-on), in Docker, or locally with uvx ha-mcp@latest. The component and app serve streamable HTTP and need no access token. Docker and uvx setups need HOMEASSISTANT\_URL and a long-lived access token in HOMEASSISTANT\_TOKEN. The stdio transport is documented as having known issues.

## What it can do

- Control smart home devices and call Home Assistant services
- Query entity states
- Manage automations and scripts
- Configure dashboards
- Run as a HACS custom component, app, Docker or uvx package
- Optional OIDC authentication for remote access

## Example prompts

- "Turn off all the lights in the living room"
- "What is the current temperature in the bedroom?"
- "Create an automation that turns on the porch light at sunset"
- "List my automations and tell me which ones are disabled"

## Install

### Claude Code

1. Run this in a terminal, in your project folder:

```bash
claude mcp add --transport stdio home-assistant --env "HOMEASSISTANT_URL=<YOUR_HOMEASSISTANT_URL>" --env "HOMEASSISTANT_TOKEN=<YOUR_HOMEASSISTANT_TOKEN>" -- uvx ha-mcp@latest
```

2. Start Claude Code and type `/mcp`. **home-assistant** should show as connected.

Add `--scope user` to make it available in every project. Replace the placeholders with your own values.

### Claude Desktop

1. Open **Settings → Developer → Edit Config**. It opens `claude_desktop_config.json`. Add:

`claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "home-assistant": {
      "command": "uvx",
      "args": [
        "ha-mcp@latest"
      ],
      "env": {
        "HOMEASSISTANT_URL": "<YOUR_HOMEASSISTANT_URL>",
        "HOMEASSISTANT_TOKEN": "<YOUR_HOMEASSISTANT_TOKEN>"
      }
    }
  }
}
```

2. Save the file and restart Claude Desktop. Replace the placeholders with your own values.

Needs uv (Python) on your computer. The file lives in `~/Library/Application Support/Claude/` on macOS and `%APPDATA%\Claude\` on Windows.

### Cursor

[Add to Cursor](<https://cursor.com/install-mcp?name=home-assistant&config=eyJjb21tYW5kIjoidXZ4IiwiYXJncyI6WyJoYS1tY3BAbGF0ZXN0Il0sImVudiI6eyJIT01FQVNTSVNUQU5UX1VSTCI6IjxZT1VSX0hPTUVBU1NJU1RBTlRfVVJMPiIsIkhPTUVBU1NJU1RBTlRfVE9LRU4iOiI8WU9VUl9IT01FQVNTSVNUQU5UX1RPS0VOPiJ9fQ%3D%3D>) (opens Cursor)

Or add it by hand to `~/.cursor/mcp.json` (all projects) or `.cursor/mcp.json` (this project):

`mcp.json`:

```json
{
  "mcpServers": {
    "home-assistant": {
      "command": "uvx",
      "args": [
        "ha-mcp@latest"
      ],
      "env": {
        "HOMEASSISTANT_URL": "<YOUR_HOMEASSISTANT_URL>",
        "HOMEASSISTANT_TOKEN": "<YOUR_HOMEASSISTANT_TOKEN>"
      }
    }
  }
}
```

Needs uv (Python) on your computer. Replace the placeholders with your own values.

### VS Code

Add it to `.vscode/mcp.json`. VS Code asks for the secret the first time and stores it securely:

`.vscode/mcp.json`:

```json
{
  "servers": {
    "home-assistant": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "ha-mcp@latest"
      ],
      "env": {
        "HOMEASSISTANT_URL": "<YOUR_HOMEASSISTANT_URL>",
        "HOMEASSISTANT_TOKEN": "${input:homeassistant-token}"
      }
    }
  },
  "inputs": [
    {
      "type": "promptString",
      "id": "homeassistant-token",
      "description": "HOMEASSISTANT_TOKEN",
      "password": true
    }
  ]
}
```

Needs uv (Python) on your computer.

### Devin Desktop

1. Add it to `~/.config/devin/mcp_config.json` (macOS and Linux) or `%APPDATA%\devin\mcp_config.json` (Windows):

`mcp_config.json`:

```json
{
  "mcpServers": {
    "home-assistant": {
      "command": "uvx",
      "args": [
        "ha-mcp@latest"
      ],
      "env": {
        "HOMEASSISTANT_URL": "<YOUR_HOMEASSISTANT_URL>",
        "HOMEASSISTANT_TOKEN": "<YOUR_HOMEASSISTANT_TOKEN>"
      }
    }
  }
}
```

2. Refresh the MCP server list in Cascade. Replace the placeholders with your own values.

Devin Desktop is the new name for Windsurf.

### Codex

```bash
codex mcp add home-assistant --env "HOMEASSISTANT_URL=<YOUR_HOMEASSISTANT_URL>" --env "HOMEASSISTANT_TOKEN=<YOUR_HOMEASSISTANT_TOKEN>" -- uvx ha-mcp@latest
```

Or edit `~/.codex/config.toml` directly:

`config.toml`:

```toml
[mcp_servers.home-assistant]
command = "uvx"
args = ["ha-mcp@latest"]
env = { HOMEASSISTANT_URL = "<YOUR_HOMEASSISTANT_URL>", HOMEASSISTANT_TOKEN = "<YOUR_HOMEASSISTANT_TOKEN>" }
```

Needs uv (Python) on your computer. Replace the placeholders with your own values.

### Gemini CLI

```bash
gemini mcp add -e "HOMEASSISTANT_URL=<YOUR_HOMEASSISTANT_URL>" -e "HOMEASSISTANT_TOKEN=<YOUR_HOMEASSISTANT_TOKEN>" home-assistant uvx ha-mcp@latest
```

This adds it to the current project. Add `-s user` to use it everywhere.

### Any client

Most clients that start local servers accept this shape:

```json
{
  "mcpServers": {
    "home-assistant": {
      "command": "uvx",
      "args": [
        "ha-mcp@latest"
      ],
      "env": {
        "HOMEASSISTANT_URL": "<YOUR_HOMEASSISTANT_URL>",
        "HOMEASSISTANT_TOKEN": "<YOUR_HOMEASSISTANT_TOKEN>"
      }
    }
  }
}
```

Zed puts servers under `context_servers` in its settings, with the same `command`, `args` and `env` fields.

Needs uv (Python) on your computer. Replace the placeholders with your own values.

## Details

- Server version: 8.6.0
- Last checked: 2026-10-03
- Listed: 2026-10-03
- Updated: 2026-10-03

---
Source: https://mcp.tc/i/home-assistant (mcp.tc is an independent directory, not affiliated with this server's publisher). Corrections: https://mcp.tc/report
