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.
Seamless access to top MCP servers powering the future of AI integration.