# Home Assistant MCP Server [Health: Active]

**Category:** 🏠 Home Automation  
**Repository:** https://github.com/jarahkon/hass-mcp-server  
**GitHub Stars:** 0  
**npm Downloads (last month):** 506  
**Views:** 6  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/home-assistant-mcp-server

## Description
MCP server for full Home Assistant control — dashboards, files, automations, add-ons, and more

## Tools
Capabilities this server exposes over MCP:

- **ha_list_dashboards** — List all Lovelace dashboards in Home Assistant
- **ha_create_dashboard** — Create a new Lovelace dashboard
- **ha_update_dashboard** — Update an existing Lovelace dashboard's properties (title, icon, etc.)
- **ha_delete_dashboard** — Delete a Lovelace dashboard
- **ha_get_dashboard_config** — Get the full Lovelace configuration of a dashboard (all views, cards, etc.)
- **ha_save_dashboard_config** — Save/overwrite the full Lovelace configuration of a dashboard. Provide the complete config with views and cards.
- **ha_list_files** — List files and directories on the Home Assistant server. Path is relative to /config/ (e.g. 'www' lists /config/www/).
- **ha_read_file** — Read a file from the Home Assistant server. Path is relative to /config/.
- **ha_upload_file** — Upload a file from the local machine to the Home Assistant server. Remote path is relative to /config/. Restricted to safe directories (www/, custom_components/, blueprints/, themes/).
- **ha_upload_file_content** — Create/overwrite a file on the Home Assistant server with the provided text content. Remote path is relative to /config/. Parent directories are created automatically.
- **ha_delete_file** — Delete a file from the Home Assistant server. Path is relative to /config/. Restricted to safe directories.
- **ha_mkdir** — Create a directory on the Home Assistant server (recursively). Path is relative to /config/.
- **ha_file_exists** — Check if a file or directory exists on the Home Assistant server. Path is relative to /config/.
- **ha_list_automations** — List all automations in Home Assistant with their IDs, aliases, and states
- **ha_get_automation** — Get the full configuration of an automation by its ID
- **ha_create_automation** — Create a new automation in Home Assistant
- **ha_update_automation** — Update an existing automation's configuration
- **ha_delete_automation** — Delete an automation
- **ha_list_scripts** — List all scripts in Home Assistant
- **ha_create_script** — Create a new script in Home Assistant
- **ha_update_script** — Update an existing script's configuration
- **ha_delete_script** — Delete a script
- **ha_list_scenes** — List all scenes in Home Assistant
- **ha_create_scene** — Create a new scene in Home Assistant
- **ha_update_scene** — Update an existing scene's configuration
- **ha_delete_scene** — Delete a scene
- **ha_list_helpers** — List all input helpers (input_boolean, input_number, input_text, input_select, input_datetime, input_button, counter, timer)
- **ha_create_helper** — Create a new input helper (input_boolean, input_number, input_text, input_select, input_datetime, input_button, counter, timer)
- **ha_update_helper** — Update an existing input helper's configuration
- **ha_delete_helper** — Delete an input helper
- **ha_list_addons** — List all installed Home Assistant add-ons with their status
- **ha_addon_info** — Get detailed information about a specific add-on
- **ha_install_addon** — Install a Home Assistant add-on by slug
- **ha_start_addon** — Start a Home Assistant add-on
- **ha_stop_addon** — Stop a running Home Assistant add-on
- **ha_restart_addon** — Restart a Home Assistant add-on
- **ha_uninstall_addon** — Uninstall a Home Assistant add-on
- **ha_addon_options** — Get or set configuration options for an add-on
- **ha_system_info** — Get Home Assistant system information (core version, OS, supervisor, host info)
- **ha_check_config** — Validate the Home Assistant configuration. Run this before reloading to catch errors.
- **ha_create_backup** — Create a Home Assistant backup
- **ha_list_backups** — List all Home Assistant backups
- **ha_restart_core** — Restart the Home Assistant core. This will briefly make HA unavailable.
- **ha_check_api** — Check if the Home Assistant API is accessible and responding
- **ha_get_config** — Get the Home Assistant configuration (location, unit system, version, components, etc.)
- **ha_update_core_config** — Update Home Assistant core configuration (internal_url, external_url, location, etc.)
- **ha_get_components** — List all currently loaded Home Assistant integrations/components
- **ha_get_error_log** — Get the Home Assistant error log contents
- **ha_get_states** — Get the current state of all entities, optionally filtered by domain (e.g. 'light', 'switch', 'sensor')
- **ha_get_entity** — Get the full state and attributes of a specific entity
- **ha_call_service** — Call a Home Assistant service (e.g. turn on a light, lock a door, send a notification)
- **ha_list_services** — List all available services, optionally filtered by domain
- **ha_render_template** — Render a Jinja2 template using Home Assistant's template engine
- **ha_list_entity_registry** — List all entities from the entity registry with their IDs, names, platforms, and areas
- **ha_list_devices** — List all devices from the device registry
- **ha_list_areas** — List all areas (rooms) in Home Assistant
- **ha_create_area** — Create a new area (room) in Home Assistant
- **ha_get_history** — Get the state history for an entity over a time period
- **ha_get_logbook** — Get logbook entries (activity log) for a time period, optionally filtered by entity
- **ha_get_events** — List all available event types in Home Assistant
- **ha_fire_event** — Fire a custom event in Home Assistant to trigger automations or integrations
- **ha_set_state** — Set or create the state of an entity. Useful for creating virtual sensors or overriding states.
- **ha_delete_state** — Delete an entity state from Home Assistant
- **ha_get_calendars** — List all calendar entities in Home Assistant
- **ha_get_calendar_events** — Get events from a specific calendar entity
- **ha_handle_intent** — Handle a conversation/voice intent in Home Assistant (e.g. natural language commands)

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `npx` (confidence: high):

```json
"mcpServers": {
  "home-assistant-mcp-server": {
    "command": "npx",
    "args": ["-y","@jarahkon/hass-mcp-server@latest"],
    "env": {
      "HA_URL": "",
      "HA_TOKEN": ""
    }
  }
}
```

**Requires environment variables:** `HA_URL`, `HA_TOKEN` — the values above are empty placeholders; fill in real credentials before running (see the repository for what each one is for).

## Documentation

## What Home Assistant MCP Server MCP server does

Home Assistant MCP Server MCP server exposes Home Assistant administration tasks as MCP tools. It can list, create, update, and delete Lovelace dashboards; retrieve and deploy complete dashboard configuration JSON; and manage files relative to the Home Assistant `/config/` directory.

The configuration tools cover automations, scripts, scenes, and input helpers. Helpers include input booleans, numbers, text fields, selects, datetimes, buttons, counters, and timers. The available operations vary by resource, but the resource groups generally support listing, retrieval, creation, updates, and deletion.

## How it works

The server runs as a local MCP process, commonly launched with `npx`, while the MCP client supplies its configuration. Home Assistant API operations use the instance URL and a long-lived access token. The README identifies REST and WebSocket as API transport layers.

File tools use SSH/SFTP rather than the Home Assistant API. File access is optional; the server can start without SSH settings, but file operations require them.

## Setup and configuration

Home Assistant MCP Server MCP server requires Home Assistant OS or another Home Assistant installation with Supervisor, Node.js 20 or newer, a Home Assistant base URL, and a long-lived access token. Create the token from the Home Assistant profile’s Security section, under Long-Lived Access Tokens.

Set `HA_URL` to the Home Assistant base URL and `HA_TOKEN` to the token in the MCP client configuration. The documented stdio setup runs `npx -y @jarahkon/hass-mcp-server@latest`, allowing the client to download and start the package when needed.

For file management, configure `HA_SSH_HOST`, `HA_SSH_PORT`, `HA_SSH_USER`, and either `HA_SSH_KEY_PATH` or `HA_SSH_PASSWORD`. The documented SSH user is `root`. An SSH application such as Advanced SSH & Web Terminal is required for these file tools.

VS Code can install the extension or use an `mcp.json` entry. The extension accepts the Home Assistant URL and token through its settings and command palette. Claude Desktop is also documented as a client setup target.

## Tools and capabilities

- Manage Lovelace dashboards and their full JSON configurations.
- Browse, read, upload, write, create, check, and delete Home Assistant files.
- Create, inspect, modify, and remove automations, scripts, and scenes.
- Create and manage the supported Home Assistant input helper types.
- Connect through REST, WebSocket, and SSH/SFTP transport layers.

## Limitations and notes

Home Assistant MCP Server MCP server needs a reachable Home Assistant instance and a valid long-lived access token. SSH configuration is not needed for API-backed tools, but file operations will fail without suitable SSH access. File deletion is restricted to safe directories according to the project description. The material does not document client-specific support beyond the listed VS Code and Claude Desktop setup paths.

_Full upstream README: https://allmcps.com/mcp/home-assistant-mcp-server/readme_

