Home Assistant MCP Server
# Home Assistant MCP Server
A Model Context Protocol (MCP) server that provides access to Home Assistant entities and services.
## Features
- **List Entities**: Browse all your Home Assistant devices (lights, switches, sensors, etc.)
- **Get Entity State**: Check the current state and attributes of any entity
- **Call Services**: Control devices (turn lights on/off, adjust climate, etc.)
- **List Services**: Discover available Home Assistant services
## Installation
```bash
npm install
npm run build
```
## Configuration
Set the following environment variables:
- `HASS_HOST`: Your Home Assistant URL (e.g., `https://your-instance.ui.nabu.casa`)
- `HASS_TOKEN`: Your Home Assistant long-lived access token
## Usage with VS Code
Add to your VS Code `settings.json`:
```json
{
"github.copilot.chat.mcp.servers": {
"homeassistant": {
"command": "node",
"args": ["C:/Repos/HomeAssistant-mcp/dist/index.js"],
"env": {
"HASS_HOST": "https://your-instance.ui.nabu.casa",
"HASS_TOKEN": "your-long-lived-token"
}
}
}
}
```
## Available Tools
### list_entities
List all Home Assistant entities, optionally filtered by domain.
**Parameters:**
- `domain` (optional): Filter by domain (e.g., "light", "switch", "sensor")
### get_entity_state
Get the current state and attributes of a specific entity.
**Parameters:**
- `entity_id` (required): The entity ID (e.g., "light.living_room")
### call_service
Call a Home Assistant service to control devices.
**Parameters:**
- `domain` (required): Service domain (e.g., "light", "switch")
- `service` (required): Service name (e.g., "turn_on", "turn_off")
- `entity_id` (optional): Target entity ID
- `data` (optional): Additional service data (brightness, color, etc.)
### list_services
List all available Home Assistant services.
## License
MIT
TDQS
Scored across 4 tools
Each tool has a clearly distinct purpose with no overlap: call_service performs actions, get_entity_state retrieves specific entity data, list_entities enumerates all entities, and list_services enumerates all services. The descriptions make it unambiguous which tool to use for each operation.
All tools follow a consistent verb_noun pattern (call_service, get_entity_state, list_entities, list_services) with clear, descriptive names. The naming convention is uniform throughout the set, making it easy to predict tool functions.
With 4 tools, the count is appropriate for a Home Assistant server, covering core operations like querying and controlling entities. It might be slightly lean for advanced workflows (e.g., missing event listening or configuration tools), but it's well-scoped for basic automation tasks.
The toolset covers essential CRUD-like operations for Home Assistant: listing and getting entities, and calling services. A minor gap exists in not providing tools for entity creation/deletion or event handling, but agents can perform core tasks effectively with the available tools.