The Unofficial and Home Assistant MCP Server
ha-mcp is a Model Context Protocol (MCP) server that enables AI assistants to interact with Home Assistant via natural language. It offers over 80 tools for device control, automation management, dashboard editing, debugging, and more, with multiple installation methods.
Notifications You must be signed in to change notification settings
Fork 137
Star 3.4k
BranchesTags
Open more actions menu
Folders and files
NameName
Last commit message
Last commit date
Latest commit
History
1,678 Commits
1,678 Commits
.claude
.claude
.gemini
.gemini
.github
.github
custom_components/ha_mcp_tools
custom_components/ha_mcp_tools
docs
docs
homeassistant-addon-dev
homeassistant-addon-dev
homeassistant-addon-webhook-proxy
homeassistant-addon-webhook-proxy
homeassistant-addon
homeassistant-addon
packaging
packaging
rules
rules
scripts
scripts
site
site
src/ha_mcp
src/ha_mcp
templates
templates
tests
tests
.dockerignore
.dockerignore
.env.example
.env.example
.gitattributes
.gitattributes
.gitignore
.gitignore
.gitmodules
.gitmodules
.python-version
.python-version
AGENTS.md
AGENTS.md
CHANGELOG.md
CHANGELOG.md
CLAUDE.md
CLAUDE.md
CONTRIBUTING.md
CONTRIBUTING.md
Dockerfile
Dockerfile
LICENSE
LICENSE
MANIFEST.in
MANIFEST.in
PRIVACY.md
PRIVACY.md
README.md
README.md
SECURITY.md
SECURITY.md
coverage.json
coverage.json
docker-compose.screenshot.yml
docker-compose.screenshot.yml
docker-compose.yml
docker-compose.yml
fastmcp-http.json
fastmcp-http.json
fastmcp-sse.json
fastmcp-sse.json
fastmcp-webclient.json
fastmcp-webclient.json
fastmcp.json
fastmcp.json
hacs.json
hacs.json
lefthook.yml
lefthook.yml
pyproject.toml
pyproject.toml
renovate.json
renovate.json
repository.yaml
repository.yaml
server.json
server.json
sgconfig.yml
sgconfig.yml
uv.lock
uv.lock
Repository files navigation
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with Home Assistant.
Using natural language, control smart home devices, query states, execute services and manage your automations.
🚀 Get Started
Full guide to get you started with Claude Desktop (~10 min)
No paid subscription required. Click on your operating system:
Quick install (~5 min)
🍎 macOS
Go to claude.ai and sign in (or create a free account)
Open Terminal and run:
curl -LsSf https://raw.githubusercontent.com/homeassistant-ai/ha-mcp/master/scripts/install-macos.sh | sh
Download Claude Desktop (or restart: Claude menu → Quit)
Ask Claude: "Can you see my Home Assistant?"
You're now connected to the demo environment! Connect your own Home Assistant →
🐧 Linux
Anthropic doesn't ship Claude Desktop for Linux, so pick one path:
Claude Desktop — free, via the community build:
Install the community Claude Desktop for Linux build and sign in with a free claude.ai account
Open Terminal and run:
curl -LsSf https://raw.githubusercontent.com/homeassistant-ai/ha-mcp/master/scripts/install-linux.sh | sh
Restart Claude Desktop, then ask: "Can you see my Home Assistant?"
Claude Code — official CLI, requires a paid Claude plan:
Install Claude Code: curl -fsSL https://claude.ai/install.sh | bash
Configure ha-mcp, then run claude:
curl -LsSf https://raw.githubusercontent.com/homeassistant-ai/ha-mcp/master/scripts/install.sh | sh -s -- --claude-code
Start claude, run /mcp to confirm, then ask: "Can you see my Home Assistant?"
Full Linux guide →
🪟 Windows
Go to claude.ai and sign in (or create a free account)
Open Windows PowerShell (from Start menu) and run:
irm https://raw.githubusercontent.com/homeassistant-ai/ha-mcp/master/scripts/install-windows.ps1 | iex
Download Claude Desktop (or restart: File → Exit)
Ask Claude: "Can you see my Home Assistant?"
You're now connected to the demo environment! Connect your own Home Assistant →
🏠 Home Assistant OS (Add-on)
Add the repository to your Home Assistant instance:
Install "Home Assistant MCP Server" from the Add-on Store and wait for it to complete
Click Start, then open the Logs tab to find your unique MCP URL
Configure your AI client with that URL
No token or credential setup needed — the add-on connects to Home Assistant automatically.
Full add-on documentation →
🌐 Remote Access (Nabu Casa / Webhook Proxy)
Already have Nabu Casa or another reverse proxy pointing at your Home Assistant? The Webhook Proxy add-on routes MCP traffic through your existing setup — no separate tunnel or port forwarding needed.
Install the MCP Server add-on (see above) and the Webhook Proxy add-on from the same store
Start the webhook proxy and restart Home Assistant when prompted
Copy the webhook URL from the add-on logs:
MCP Server URL (remote): https://xxxxx.ui.nabu.casa/api/webhook/mcp_xxxxxxxx
Configure your AI client with that URL
For other remote access methods (Cloudflare Tunnel, custom reverse proxy), see the Setup Wizard.
Webhook proxy documentation →
🧙 Setup Wizard for 15+ clients
Claude Code, Gemini CLI, ChatGPT, Open WebUI, VSCode, Cursor, and more.
Having issues? Check the FAQ & Troubleshooting
💬 What Can You Do With It?
Just talk to Claude naturally. Here are some real examples:
You Say What Happens
"Create an automation that turns on the porch light at sunset" Creates the automation with proper triggers and actions
"Add a weather card to my dashboard" Updates your Lovelace dashboard with the new card
"The motion sensor automation isn't working, debug it" Analyzes execution traces, identifies the issue, suggests fixes
"Make my morning routine automation also turn on the coffee maker" Reads the existing automation, adds the new action, updates it
"Create a script that sets movie mode: dim lights, close blinds, turn on TV" Creates a reusable script with the sequence of actions
Spend less time configuring, more time enjoying your smart home.
✨ Features
Category Capabilities
🔍 Search Fuzzy entity search, deep config search, system overview
🏠 Control Any service, bulk device control, real-time states
🔧 Manage Automations, scripts, helpers, dashboards, areas, zones, groups, calendars, blueprints
📊 Monitor History, statistics, camera snapshots, automation traces, ZHA devices
💾 System Backup/restore, updates, add-ons, device registry
🔒 Safety Read Only Mode toggle, per-tool enable/disable, tool security policies (user approval), automatic edit backups
Complete Tool List (84 tools)
Category Tools
Add-ons ha_get_addon, ha_manage_addon
Areas & Floors ha_list_floors_areas, ha_remove_area_or_floor, ha_set_area_or_floor
Assist ha_manage_pipeline
Automations ha_config_get_automation, ha_config_remove_automation, ha_config_set_automation
Blueprints ha_get_blueprint, ha_import_blueprint
Calendar ha_config_get_calendar_events, ha_config_remove_calendar_event, ha_config_set_calendar_event
Camera ha_get_camera_image
Dashboard ha_get_dashboard_screenshot (beta)
Dashboards ha_config_delete_dashboard_resource, ha_config_delete_dashboard, ha_config_get_dashboard, ha_config_list_dashboard_resources, ha_config_set_dashboard_resource, ha_config_set_dashboard
Device Registry ha_get_device, ha_remove_device, ha_set_device
Energy ha_manage_energy_prefs
Entity Registry ha_get_entity_exposure, ha_get_entity, ha_remove_entity, ha_set_entity
Files ha_delete_file (beta), ha_list_files (beta), ha_read_file (beta), ha_write_file (beta)
Groups ha_config_list_groups, ha_config_remove_group, ha_config_set_group
HACS ha_get_hacs_info, ha_manage_hacs
Helper Entities ha_config_list_helpers, ha_config_set_helper, ha_remove_helpers_integrations
History & Statistics ha_get_automation_traces, ha_get_history, ha_get_logs
Integrations ha_get_integration, ha_get_system_health, ha_set_integration_enabled
Labels & Categories ha_config_get_category, ha_config_get_label, ha_config_remove_category, ha_config_remove_label, ha_config_set_category, ha_config_set_label
Scenes ha_config_get_scene, ha_config_remove_scene, ha_config_set_scene
Scripts ha_config_get_script, ha_config_remove_script, ha_config_set_script
Search & Discovery ha_get_overview, ha_get_state, ha_search
Service & Device Control ha_bulk_control, ha_call_event, ha_call_service, ha_get_operation_status, ha_list_services
System ha_config_set_yaml (beta), ha_get_updates, ha_manage_backup, ha_manage_custom_tool (beta), ha_manage_theme, ha_reload_core, ha_restart
Todo Lists ha_get_todo, ha_remove_todo_item, ha_set_todo_item
Utilities ha_eval_template, ha_install_mcp_tools (beta), ha_report_issue
Zones ha_get_zone, ha_remove_zone, ha_set_zone
🆚 ha-mcp vs. Home Assistant's built-in MCP Server
Home Assistant ships its own MCP Server integration. It is built on the Assist pipeline, so a connected MCP client can read and control the entities you have exposed to Assist and run the intents Assist understands — handy for voice-style control of already-exposed devices.
ha-mcp is a standalone server built for configuring, building, and debugging your smart home, not just controlling it. On top of device control, it adds capabilities the built-in integration does not have:
Capability Built-in MCP Server ha-mcp
Control exposed devices, query states Yes Yes
Entity scope Only entities exposed to Assist Everything in Home Assistant
Create / edit automations, scripts, scenes No Yes
Build & edit dashboards No Yes
Debug automations from traces, read history & logs No Yes
Manage helpers, areas, zones, labels, groups No Yes
Backups, add-ons, HACS, device & entity registry No Yes
Rule of thumb: Use the built-in integration for voice-style control of devices you have already exposed; use ha-mcp when you want an AI assistant that can also build and maintain your Home Assistant setup.
🔌 Custom Component (ha_mcp_tools) (beta)
Some tools require a companion custom component installed in Home Assistant. Standard HA APIs do not expose file system access or YAML config editing. This component provides both.
Tools that require the component:
Tool Description
ha_config_set_yaml (beta) Safely add, replace, or remove top-level YAML keys in configuration.yaml and package files (automatic backup, validation, and config check)
ha_list_files (beta) List files in allowed directories
ha_read_file (beta) Read files from allowed paths (config YAML, logs, and allowed directories)
ha_write_file (beta) Write files to allowed directories
ha_delete_file (beta) Delete files from allowed directories
All other tools work without the component. These five return an error with installation instructions if the component is missing.
These tools also require feature flags: HAMCP_ENABLE_FILESYSTEM_TOOLS=true (file tools) and ENABLE_YAML_CONFIG_EDITING=true (YAML editing). To enable the ha_install_mcp_tools installer tool, set HAMCP_ENABLE_CUSTOM_COMPONENT_INTEGRATION=true.
Install using HACS (recommended)
To add manually: open HACS > Integrations > three-dot menu > Custom repositories > add https://github.com/homeassistant-ai/ha-mcp (category: Integration) > Download.
After installing, restart Home Assistant. Then open Settings > Devices & Services > Add Integration and search for Home Assistant MCP Server Custom Component.
On Home Assistant OS / Supervised, the integration offers to add the add-on repository and install and start the Home Assistant MCP Server add-on for you — no need to add the add-on repository by hand. On Container / Core installs (no Supervisor) there is no add-on; run the server via Docker or pip and the integration just sets up the file/YAML services.
Install manually
Copy custom_components/ha_mcp_tools/ from this repository into your HA config/custom_components/ directory. Restart Home Assistant, then add the integration as described above.
🧠 Better Results with Agent Skills
This server gives your AI agent tools to control Home Assistant. For better configurations, pair it with Home Assistant Agent Skills — domain knowledge that teach
[truncated for AI cost control]