OpenHue MCP Server
by lsemenenko
# OpenHue MCP Server
An MCP server that enables control of Philips Hue lights through Claude and other LLM interfaces using the OpenHue CLI.
## Prerequisites
- [Node.js](https://nodejs.org/) (v16 or higher)
- [Docker](https://www.docker.com/get-started)
- [Claude for Desktop](https://claude.ai/download) (optional, for testing)
## Bridge Setup
Before using the server, you need to set up the OpenHue CLI with your Hue Bridge:
1. Run the setup command:
```bash
# On Linux/macOS:
docker run -v "${HOME}/.openhue:/.openhue" --rm --name=openhue -it openhue/cli setup
# On Windows (PowerShell):
docker run -v "${env:USERPROFILE}\.openhue:/.openhue" --rm --name=openhue -it openhue/cli setup
```
2. Follow the on-screen instructions:
- The CLI will search for your Hue Bridge
- Press the link button on your Hue Bridge when prompted
- Wait for confirmation that the setup is complete
3. Verify the setup by listing your lights:
```bash
# On Linux/macOS:
docker run -v "${HOME}/.openhue:/.openhue" --rm --name=openhue -it openhue/cli get lights
# On Windows (PowerShell):
docker run -v "${env:USERPROFILE}\.openhue:/.openhue" --rm --name=openhue -it openhue/cli get lights
```
If you see your lights listed, the setup is complete and you're ready to use the MCP server.
## Installation
1. Clone the repository:
```bash
git clone <your-repo-url>
cd claude-mcp-openhue
```
2. Install dependencies:
```bash
npm install
```
3. Build the project:
```bash
npm run build
```
4. Run the server:
```bash
npm start
```
## Features
This server exposes the following capabilities through MCP:
### Lights Control
- List all lights or get specific light details
- Turn lights on/off
- Adjust brightness
- Set colors
- Control color temperature
### Room Control
- List all rooms or get room details
- Control all lights in a room together
- Set room-wide brightness and colors
### Scene Management
- List available scenes
- Activate scenes with different modes
- Filter scenes by room
## Usage with Claude Desktop
1. Open your Claude Desktop configuration file:
- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
2. Add the server configuration:
```json
{
"mcpServers": {
"hue": {
"command": "node",
"args": ["/absolute/path/to/build/index.js"]
}
}
}
```
3. Restart Claude Desktop
4. Look for the hammer icon to verify the server is connected
## Example Commands
Once connected, you can ask Claude natural language questions like:
- "What lights do I have in the living room?"
- "Turn on all the lights in the kitchen"
- "Set the bedroom lights to 50% brightness"
- "Change the office lights to blue"
- "Activate the 'Relaxing' scene"
- "What scenes are available in the den?"
## Available Tools
### get-lights
Lists all lights or gets details for specific lights
```typescript
{
lightId?: string; // Optional light ID or name
room?: string; // Optional room name filter
}
```
### control-light
Controls individual lights
```typescript
{
target: string; // Light ID or name
action: "on" | "off";
brightness?: number; // 0-100
color?: string; // Color name
temperature?: number; // 153-500 Mirek
}
```
### get-rooms
Lists all rooms or gets specific room details
```typescript
{
roomId?: string; // Optional room ID or name
}
```
### control-room
Controls all lights in a room
```typescript
{
target: string; // Room ID or name
action: "on" | "off";
brightness?: number;
color?: string;
temperature?: number;
}
```
### get-scenes
Lists available scenes
```typescript
{
room?: string; // Optional room name filter
}
```
### activate-scene
Activates a specific scene
```typescript
{
name: string; // Scene name or ID
room?: string; // Optional room name
mode?: "active" | "dynamic" | "static";
}
```
## Development
### Project Structure
```
.
├── src/
│ └── index.ts # Main server implementation
├── build/ # Compiled JavaScript
├── package.json
├── tsconfig.json
└── README.md
```
### Building
```bash
npm run build
```
### Running
```bash
npm start
```
## Troubleshooting
### Server Not Connecting
1. Check that Docker is running
2. Verify OpenHue configuration exists
3. Check Claude Desktop logs
4. Try running OpenHue CLI directly
### Command Failures
1. Check OpenHue CLI permissions
2. Verify light/room/scene names
3. Check Docker container logs
4. Verify Hue Bridge connectivity
## License
MIT License
## Contributing
1. Fork the repository
2. Create your feature branch
3. Commit your changes
4. Push to the branch
5. Create a new Pull Request