# HomeAssistant-Light-MCP

**Category:** 💻 Developer Tools  
**Repository:** https://github.com/Koneisto/HomeAssistant-Light-MCP  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/homeassistant-light-mcp

## Description
Control Home Assistant lights and scenes. Lights only by design for safety.

## Claude Desktop Quick Installation
Heuristic fallback — verify the package name and runner against the repository README before running it. Uses `npx` (confidence: low):

```json
"mcpServers": {
  "homeassistant-light-mcp": {
    "command": "npx",
    "args": ["-y","homeassistant-light-mcp"]
  }
}
```

## Documentation & README

# Home Assistant Light MCP

[![npm version](https://img.shields.io/npm/v/ha-mcp-server.svg)](https://www.npmjs.com/package/ha-mcp-server)
[![CI](https://github.com/Koneisto/HomeAssistant-Light-MCP/actions/workflows/ci.yml/badge.svg)](https://github.com/Koneisto/HomeAssistant-Light-MCP/actions/workflows/ci.yml)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

A Model Context Protocol (MCP) server for controlling Home Assistant lights and managing scenes. Complements the official Home Assistant MCP by providing detailed light control with colors and scene management.

> **Like this project?** Give it a ⭐ on GitHub and help others discover it!

## Design Philosophy: Lights Only

This MCP **intentionally controls only lights** - not switches, not other entities. This is a deliberate safety decision:

- **Switches can control critical systems** - HVAC, heaters, air conditioning, water pumps
- **Accidental activation could be dangerous** - turning on a heater while away, disabling AC in summer
- **Lights are safe** - worst case is lights turn on/off unexpectedly

If you need to control switches or other entities, use the official Home Assistant MCP or automations with appropriate safeguards.

## Features

- **Show Lights** - View all lights with full details:
  - State, brightness, RGB colors, color temperature
  - Color mode and supported modes
  - Available effects (colorloop, etc.)
  - Color temperature range (min/max Kelvin)
- **Adjust Light** - Control lights (on/off, brightness, RGB color, color temperature, effects)
- **Create Scene** - Save current lighting as a scene with two modes:
  - `exclusive` - Turns off other lights when activated
  - `additive` - Only affects lights in the scene
- **List Scenes** - View all saved scenes
- **Activate Scene** - Activate a saved scene (with IKEA Tradfri support)
- **Update Scene** - Update an existing scene with current light states
- **Delete Scene** - Remove a scene
- **Blackout** - Turn off all lights (with optional exclusions)

## Why This MCP?

The official Home Assistant MCP is limited - it can't show light colors or provide detailed state information. This MCP fills that gap:

| Feature | Official HA MCP | This MCP |
|---------|-----------------|----------|
| Show light colors | No | Yes |
| Show brightness | Limited | Full detail |
| Show color modes | No | Yes |
| Show effects | No | Yes |
| Set RGB colors | No | Yes |
| Color temperature | No | Yes |
| Set effects | No | Yes |
| Create scenes | No | Yes |
| IKEA Tradfri fixes | No | Yes |

## Installation

```bash
npm install -g ha-mcp-server
```

Or clone and build:
```bash
git clone https://github.com/Koneisto/HomeAssistant-Light-MCP.git
cd HomeAssistant-Light-MCP
npm install
npm run build
```

## Configuration

Add to your MCP client configuration:

### Claude Desktop

Edit config file:
- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
- **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`

**Option 1: Using npx (recommended, no global install needed)**
```json
{
  "mcpServers": {
    "ha-light-scenes": {
      "command": "npx",
      "args": ["-y", "ha-mcp-server"],
      "env": {
        "HA_URL": "http://your-home-assistant-ip:8123",
        "HA_TOKEN": "your-long-lived-access-token"
      }
    }
  }
}
```

**Option 2: Global install**
```bash
npm install -g ha-mcp-server
```
```json
{
  "mcpServers": {
    "ha-light-scenes": {
      "command": "ha-mcp-server",
      "env": {
        "HA_URL": "http://your-home-assistant-ip:8123",
        "HA_TOKEN": "your-long-lived-access-token"
      }
    }
  }
}
```

### Other MCP Clients

The same configuration structure works with any MCP-compatible client.

### Get your Home Assistant token

1. Go to Home Assistant → Profile (bottom left)
2. Scroll to "Long-Lived Access Tokens"
3. Click "Create Token"
4. Copy the token

## Usage Examples

### Show lights
> "Show me all the lights"

> "What lights are on?"

### Control lights
> "Turn on living room light"

> "Set bedroom to 50% brightness"

> "Make the kitchen light red"

> "Set studio lights to warm white"

> "Start colorloop on the hallway light"

### Create a scene
> "Save this as Movie Night"

### Activate a scene
> "Activate Movie Night"

### Update a scene
> "Update Evening Lights with current settings"

### Blackout
> "Turn off all lights"

> "Turn off all lights except the balcony"

## Tools Reference

| Tool | Description |
|------|-------------|
| `scene_show_lights` | Show all lights with state, brightness, colors, effects, color modes |
| `scene_adjust_light` | Control a light (on/off, brightness, color, effects) |
| `scene_create` | Create a new scene from current light states |
| `scene_list` | List all scenes |
| `scene_activate` | Activate a scene |
| `scene_update` | Update existing scene with current lights |
| `scene_delete` | Delete a scene |
| `scene_blackout` | Turn off all lights (supports exclusions) |
| `scene_diagnose` | Diagnose lights and scenes, check connectivity |
| `scene_fix` | Fix scene problems, restore from backup |
| `scene_configure` | Set Home Assistant URL and token |

### Light Properties

`scene_show_lights` returns:
- `state` - on/off
- `brightness` / `brightness_pct` - 0-255 / 0-100%
- `rgb_color` - [R, G, B] values
- `color_temp_kelvin` - Color temperature
- `color_mode` - Current mode (xy, color_temp, rgb, hs)
- `supported_color_modes` - What the light supports
- `effect` - Active effect (if any)
- `effect_list` - Available effects
- `color_temp_range` - Min/max Kelvin (if supported)

## Scene Modes

- **Exclusive**: Turns off all lights not in the scene. Good for room-specific scenes.
- **Additive**: Only affects lights in the scene. Good for accent lighting.

## Local Backup & Multi-Instance Support

This MCP maintains a local backup of scenes you create:
- **Automatic backup**: Scenes are saved to `~/.config/ha-mcp-server/scenes-backup.json`
- **Multi-instance aware**: Detects when another MCP instance (or HA UI) modifies scenes
- **Smart conflict resolution**: Merges changes from multiple sources
- **Restore capability**: Can restore scenes if Home Assistant loses them

### Diagnostics (`scene_diagnose`)

Analyzes your lights and scenes to identify problems:
- Tests light connectivity and response times
- Detects connection types (Zigbee, WiFi, Bluetooth)
- Finds scenes with null values or missing lights
- Compares Home Assistant state with local backup
- Reports new lights not yet in exclusive scenes

Example: *"Run diagnostics on my lights"*

### Fix & Repair (`scene_fix`)

Four actions to repair scene problems:

| Action | Description |
|--------|-------------|
| `fix_all` | Auto-fix all scenes: remove null values, add missing lights to exclusive scenes |
| `fix_scene` | Fix a specific scene by name |
| `test_scene` | Activate a scene and report what went wrong |
| `restore_from_backup` | Restore scenes from local backup if Home Assistant lost them |

Example: *"Fix all my scenes"* or *"Restore Evening Lights from backup"*

## IKEA Tradfri Support

IKEA Tradfri lights have a known issue when switching between RGB color mode and color temperature (Kelvin) mode. The bulbs need time to process the mode change before accepting brightness or color values.

**Note:** Home Assistant's native scenes don't work reliably with Tradfri lights due to these timing issues. This MCP provides a workaround by managing scenes independently with proper delays.

This MCP automatically handles Tradfri lights by:
- Detecting Tradfri devices by manufacturer name
- Adding a 500ms delay between mode switch and subsequent commands
- Properly sequencing color/temperature changes with brightness adjustments

Without these fixes, Tradfri lights often ignore commands or produce incorrect colors when switching modes.

## Security

### Your Data Stays Local
- All communication happens directly between your computer and your Home Assistant instance
- No data is sent to external servers or third parties
- The MCP server runs locally on your machine via stdio (no open network ports)

### No Tracking
- We don't care enough to track you

### Token Safety
- Your Home Assistant token is stored only on your local machine
- Use environment variables to avoid storing tokens in files
- The token is only sent to your own Home Assistant instance
- You can revoke the token anytime from Home Assistant settings

### What This Server Can Access
- Only lights and scenes in your Home Assistant
- Cannot access other Home Assistant entities (sensors, locks, cameras, etc.)
- Cannot make changes outside of light control and scene management

## Contributing

Found a bug or have an idea? [Open an issue](https://github.com/Koneisto/HomeAssistant-Light-MCP/issues) or submit a pull request!

## License

MIT - Use freely, attribution appreciated but not required.

## Author

[Koneisto](https://github.com/Koneisto)

---
*Built by people with questionable priorities*

