Claude Desktop + Home Assistant in ~10 minutes
Works with free Claude account - no subscription needed.
Go to claude.ai and create a free account.
Open Terminal and paste:
curl -LsSf https://raw.githubusercontent.com/homeassistant-ai/ha-mcp/master/scripts/install-macos.sh | sh This installs the required tools and configures Claude Desktop for the demo environment.
brew install uv Or without Homebrew: curl -LsSf https://astral.sh/uv/install.sh | sh
{
"mcpServers": {
"Home Assistant": {
"command": "uvx",
"args": ["ha-mcp@latest"],
"env": {
"HOMEASSISTANT_URL": "https://ha-mcp-demo-server.qc-h.net",
"HOMEASSISTANT_TOKEN": "demo"
}
}
}
} 4. Save and restart Claude: Claude menu → Quit Claude, then reopen.
Before setting up Claude Desktop, you can smoke-test that uvx and ha-mcp work from a bare terminal using the public demo server:
HOMEASSISTANT_URL=https://ha-mcp-demo-server.qc-h.net HOMEASSISTANT_TOKEN=demo uvx ha-mcp@latest If it starts without errors and waits for input, everything is working. Press Ctrl+C to exit and continue with the steps below.
Download and install Claude Desktop from claude.ai/download.
Already have it? Restart it: Claude menu → Quit Claude, then reopen.
Open Claude Desktop and ask:
Can you see my Home Assistant? Claude should respond with a list of entities from the demo environment (lights, sensors, switches, etc.).
The demo environment is a real Home Assistant you can experiment with:
Web UI: ha-mcp-demo-server.qc-h.net
Login: mcp / mcp
Note: Resets weekly - your changes won't persist
Try asking Claude:
Ready to use your own Home Assistant? Edit the config file:
open "$HOME/Library/Application Support/Claude/claude_desktop_config.json" Replace the demo values:
{
"mcpServers": {
"Home Assistant": {
"command": "uvx",
"args": ["ha-mcp@latest"],
"env": {
"HOMEASSISTANT_URL": "http://homeassistant.local:8123",
"HOMEASSISTANT_TOKEN": "your_long_lived_token"
}
}
}
} Then restart Claude: Claude menu → Quit Claude, then reopen.
If the demo server works but your local Home Assistant doesn't, check the following:
1. macOS Local Network Privacy (Sequoia 15+)
macOS may silently block Claude Desktop subprocesses from accessing local network IPs (192.168.x.x, 10.x.x.x). Check System Settings → Privacy & Security → Local Network for Claude Desktop.
Workaround — SSH tunnel to localhost:
ssh -N -L 8123:localhost:8123 user@your-ha-server-ip Then set HOMEASSISTANT_URL to http://localhost:8123.
2. Firewall software
Little Snitch, Lulu, or similar tools may block python/node connections from Claude Desktop. Add firewall rules to allow them. See #780.
3. http:// vs https://
HA in container mode (Docker, K3s) uses HTTP by default. Use http:// unless you configured SSL/TLS or a reverse proxy.
4. Python 3.13 required
ha-mcp requires Python 3.13+. Older versions get outdated ha-mcp with known bugs.
brew install python@3.13
uvx --refresh ha-mcp@latest If uvx still picks the old Python, add "--python", "3.13" to your config args.
See the FAQ for full details.
We'd love to hear how you're using ha-mcp!
Having issues? See the FAQ & Troubleshooting Guide