
Home Assistant
STDIOMCP server for Home Assistant integration, enabling LLMs to control smart homes via natural language.
MCP server for Home Assistant integration, enabling LLMs to control smart homes via natural language.
A Model Context Protocol (MCP) server for integrating with Home Assistant, allowing LLMs to control and query your smart home.
# Install globally using bun bun install -g home-assistant-mcp-server # Or install from source git clone https://github.com/oleander/home-assistant-mcp-server.git cd home-assistant-mcp-server bun install bun run build bun link
Create a .env
file in your current directory with the following variables:
# Required configurations
HASS_URL=http://your-home-assistant:8123 # URL to your Home Assistant instance
HASS_TOKEN=your_long_lived_access_token # Long-lived access token for authentication
# Optional configurations
PORT=3000 # Port for the HTTP server (default: 3000)
HASS_MOCK=false # Enable mock data mode when Home Assistant is unavailable (default: false)
Variable | Required | Default | Description |
---|---|---|---|
HASS_URL | Yes | - | URL to your Home Assistant instance (e.g., http://homeassistant.local:8123) |
HASS_TOKEN | Yes | - | Long-lived access token for authenticating with Home Assistant |
PORT | No | 3000 | Port number for the HTTP server when using HTTP/SSE transport |
HASS_MOCK | No | false | When set to "true", enables mock data mode for testing without a Home Assistant connection |
To get a long-lived access token:
# Standard mode (requires a running Home Assistant instance) home-assistant-mcp-server # Start with HTTP/SSE transport home-assistant-mcp-server --stdio # Start with stdio transport for direct process communication # Demo mode (with mock data when Home Assistant is unavailable) home-assistant-mcp-server --mock # Start with HTTP/SSE transport and mock data home-assistant-mcp-server --stdio --mock # Start with stdio transport and mock data
To use with Claude Desktop:
Edit your Claude Desktop config file:
~/Library/Application Support/Claude/claude_desktop_config.json
%APPDATA%\Claude\claude_desktop_config.json
Add the server configuration:
{ "mcpServers": { "homeassistant": { "command": "home-assistant-mcp-server" "env": { "HASS_URL": "http://your-home-assistant:8123", "HASS_TOKEN": "your_token_here", "HASS_MOCK": "true" } } } }
If you have Home Assistant running, simply remove the --mock
flag and set HASS_MOCK
to false
.
The server exposes several tools for interacting with Home Assistant:
states
- Query entity stateslights
- List lightslight
- Control a lightservice
- Call Home Assistant serviceshistory
- Retrieve historical entity dataservices
- List available servicesconfig
- Get Home Assistant configurationdomains
- List available domainserror_log
- Get Home Assistant error logdevices
- Get all devices in Home AssistantFor detailed usage examples, see docs/hass-mcp.md.
This server requires a Home Assistant access token with full access. Consider these security recommendations:
.env
file secure and don't commit it to source controlThis project is licensed under the MIT License - see the LICENSE file for details.