Skip to main content
Glama
README.md
[![smithery badge](https://smithery.ai/badge/@guilhermelirio/homeassistant-mpc)](https://smithery.ai/server/@guilhermelirio/homeassistant-mpc)

# Home Assistant MCP

This is an MCP (Model Context Protocol) server that provides tools for integration with Home Assistant, allowing AI assistants to interact with smart home devices.

## Setup

### Installing via Smithery

To install Home Assistant Integration for Claude Desktop automatically via [Smithery](https://smithery.ai/server/@guilhermelirio/homeassistant-mpc):

```bash
npx -y @smithery/cli install @guilhermelirio/homeassistant-mpc --client claude
```

### Manual Installation
1. Install dependencies:

```bash
npm install
```

2. Configure environment variables:
   - Obtain a Long-Lived Access Token from your Home Assistant
   - Configure the environment variables in a `.env` file at the project root:

```
HOME_ASSISTANT_URL=http://your-home-assistant:8123
HOME_ASSISTANT_TOKEN=your_token_here
```

## Starting the server

```bash
npm start
```

For development:

```bash
npm run dev
```

## Available Tools

### Home Assistant API Verification

- **homeassistant_api**: Verifies if the Home Assistant API is online
  - Parameters: none
  - Example: `homeassistant_api()`

### Get Entity State

- **homeassistant_get_state**: Gets the current state of a Home Assistant entity
  - Parameters: `entity_id` (entity ID)
  - Example: `homeassistant_get_state("light.living_room")`

### Call Services

- **homeassistant_call_service**: Calls a service for a Home Assistant entity
  - Parameters:
    - `entity_id` (entity ID)
    - `domain` (service domain)
    - `service` (service to call)
  - Example: `homeassistant_call_service("light.living_room", "light", "turn_on")`

## Development

This project uses TypeScript and the MCP SDK library to create tools that can be accessed by language models such as Claude, GPT, etc.

To add new tools:

1. Create a module in `src/tools/[category]`
2. Implement your tools following the existing pattern
3. Register the module in `src/index.ts`

## Contributions

Contributions are welcome! Feel free to open issues or submit pull requests.

## License

This project is licensed under the MIT License - see the LICENSE file for details.

TDQS

B3.3/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: one checks API status, one calls services, and one retrieves entity states. There is no overlap in functionality, making it easy for an agent to select the correct tool without confusion.

Naming Consistency5/5

All tool names follow a consistent snake_case pattern with a 'homeassistant_' prefix and descriptive verb_noun combinations (api, call_service, get_state). This uniformity enhances readability and predictability.

Tool Count3/5

With only 3 tools, the set feels thin for a Home Assistant integration, which typically involves more operations like listing entities, setting states, or handling events. While the tools cover basic needs, the scope could be expanded for better coverage.

Completeness3/5

The tools provide core functionality (API check, service calls, state retrieval) but lack operations like listing entities, updating states, or handling events. This creates minor gaps that agents might need to work around, though basic workflows are supported.

Maintenance

ActivityInactive
ResponsivenessNo issues