Skip to main content
Glama
diverdown1964

Home Assistant MCP Server

README.md
# 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

B3.4/5.0

Scored across 4 tools

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count4/5

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.

Completeness4/5

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.