Skip to main content
Glama

AI HueBot

npm version license node

Control your Philips Hue lights with AI. Set vibes, save favorites, and let it learn your preferences over time.

An MCP server that connects any AI client (Claude, etc.) to your Hue lights. Just describe the mood you want.

Features

  • Vibe mode -- say "cozy evening" or "deep focus" and the AI picks colors and brightness for every light

  • Saved vibes -- every vibe is auto-saved and can be re-applied later

  • Ratings & feedback -- rate vibes 1-10 so the AI learns what you like

  • Favorites -- quickly access your top-rated vibes

  • Individual & bulk control -- set any light or all lights at once

  • Scene activation -- trigger any Hue scene by name

  • Smart hints -- gently introduces the feedback system to new users

  • Zero config auth -- built-in OAuth credentials, just authorize in your browser once

Related MCP server: LIFX MCP Server

Quick Start

npx ai-huebot

That's it. Add it to your AI client (see below), then just ask:

"Set a cozy evening vibe"

"Make the bedroom warm orange at 40%"

"Rate that vibe 9 out of 10"

"Apply my highest rated vibe"

Setup

Claude Code

claude mcp add ai-huebot -- npx ai-huebot

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "ai-huebot": {
      "command": "npx",
      "args": ["ai-huebot"]
    }
  }
}

Any MCP Client

  • Command: npx

  • Args: ["ai-huebot"]

  • Transport: stdio

First Run

Call the hue_auth tool from your AI client. It opens your browser to authorize with Philips Hue. Tokens are saved to ~/.ai-huebot/tokens.json and refresh automatically.

Tools

Tool

Description

hue_auth

Authorize with Philips Hue (browser OAuth)

list_lights

List all lights with current state

set_light

Control a single light (on/off, brightness, color)

set_all_lights

Set all lights to the same state

set_scene

Activate a Hue scene by name

set_vibe

Describe a mood -- AI picks colors for each light (auto-saves)

save_vibe

Manually save a light configuration as a named vibe

list_saved_vibes

List all saved vibes

apply_saved_vibe

Re-apply a saved vibe

delete_saved_vibe

Delete a saved vibe

rate_vibe

Rate a vibe (1-10) and/or leave text feedback

get_vibe_feedback

View all feedback, filterable by rating

get_favorites

Get your top-rated vibes (rating >= 7)

get_user_hint

Get a one-time hint about the feedback system

acknowledge_hint

Dismiss the hint permanently

How It Works

Auth: OAuth 2.0 against the Hue Remote API (CLIP v2). Built-in credentials work out of the box -- or set HUE_CLIENT_ID, HUE_CLIENT_SECRET, and HUE_CALLBACK_URL env vars to use your own.

Vibes: When you describe a vibe, the AI chooses hex colors and brightness for each light. The configuration is automatically saved to ~/.ai-huebot/saved-vibes/ as JSON so you can re-apply it anytime.

Feedback loop: Rate vibes and leave feedback. The AI uses this history to suggest vibes you'll like and avoid ones you didn't. Favorites (rating >= 7) are surfaced on request.

Development

git clone https://github.com/EthanSK/ai-huebot-mcp.git
cd ai-huebot-mcp
npm install
npm run build   # compile TypeScript
npm run dev     # run with tsx (auto-reload)

Troubleshooting

  • 403 on CLIP v2 API -- CLIP v2 requires a hue-application-key header containing a whitelisted bridge username. The hue_auth flow creates this automatically, but if the stored username is lost or invalid, v2 calls will return 403. The server automatically falls back to the v1 API in this case. To fix permanently, re-run hue_auth to re-establish the bridge link.

  • Auth token expiry -- Access tokens last 7 days and auto-refresh using the stored refresh token. If refresh fails (e.g. revoked access), re-run hue_auth to re-authorize.

  • Bridge not responding -- Make sure your Hue bridge is powered on and on the same network as your machine. The bridge's local IP can change if your router reassigns it -- check the Hue app for the current IP.

  • MCP server not loading in Claude Code -- MCP servers initialize at session start. If AI HueBot doesn't appear, run /reload-plugins or restart the Claude Code session. Run /doctor to check for configuration errors.

License

MIT

Available Tools

21 tools
acknowledge_hintA

Mark the feedback system hint as shown so it won't be displayed again.

Inputs: no named parameters.

animate_lightsA

Animate lights through a sequence of color phases. Each phase defines colors/brightness for each light, and the animation cycles through them with smooth transitions. Great for dynamic vibes like 'lava flow', 'ocean waves', 'disco', etc. The AI should generate creative phases based on the vibe description. The animation runs in the background and can be stopped with stop_animation.

Inputs: phases (required), vibe, cycles, transition_time, +1 more.

apply_saved_vibeB

Apply a previously saved vibe by name. Restores the light configuration that was saved.

Inputs: name (required).

delete_saved_vibeA

Delete a previously saved vibe by name.

Inputs: name (required).

get_favoritesA

Get top-rated vibes (rating >= 7 by default). Use this to suggest vibes the user has enjoyed before.

Inputs: min_rating.

get_user_hintA

Get a hint message about the feedback system for the user. Returns a hint only if the user hasn't been told about the feedback system yet. Relay the hint text to the user if one is returned.

Inputs: no named parameters.

get_user_profileA

Get the full user profile with light preferences, vibe history, colour preferences, and patterns. Read this before making vibe decisions to personalise recommendations. The profile is stored as markdown at ~/.ai-huebot/user-profile.md and is auto-populated over time.

Inputs: no named parameters.

get_vibe_feedbackA

Retrieve all vibe feedback entries. Optionally filter by minimum rating or sort by rating. Useful for understanding user preferences.

Inputs: min_rating, sort_by_rating.

hue_apiA

Make an arbitrary Philips Hue CLIP v2 API call. This gives full unrestricted access to the Hue API. The path is relative to /route/clip/v2/ (e.g. 'resource/light', 'resource/light/{id}', 'resource/scene', 'resource/grouped_light/{id}', 'resource/room', 'resource/zone', 'resource/bridge'). See https://developers.meethue.com/develop/hue-api-v2/ for full API docs.

Inputs: path (required), method (required), body.

hue_authA

Start the Philips Hue OAuth authorization flow. Opens a browser window to authorize access to your Hue lights. Only needed on first use or when tokens expire.

Inputs: no named parameters.

list_lightsA

List all Philips Hue lights with their current state including on/off, brightness, and color.

Inputs: no named parameters.

list_saved_vibesA

List all previously saved vibes. Shows names, descriptions, and light configurations.

Inputs: no named parameters.

rate_vibeA

Rate a vibe and/or leave feedback. At least one of rating or feedback must be provided. Use the vibe name from saved vibes.

Inputs: vibe_name (required), rating, feedback.

save_vibeA

Save the current light state as a named vibe. Captures a snapshot of specified lights with their colors and brightness so it can be re-applied later.

Inputs: name (required), lights (required), description.

set_all_lightsA

Set all Hue lights to the same state. You can control on/off, brightness, and color.

Inputs: on, color_hex, brightness.

set_effectA

Set a native Hue light effect. Supported effects: 'candle' (candle flicker), 'fire' (fireplace), 'prism' (color cycling/rainbow). Use 'no_effect' to stop. Can target a specific light or all lights.

Inputs: effect (required), light_id.

set_lightB

Set a specific Hue light's state. You can control on/off, brightness (0-100), and color (hex string like #FF0000 or xy coordinates).

Inputs: light_id (required), on, color_hex, brightness, +2 more.

set_sceneA

Activate a Hue scene by name. Lists available scenes if the exact name is not found.

Inputs: scene_name (required).

set_vibeA

Set a vibe across your lights. Provide a vibe description and an array of light settings that match the vibe. Claude should determine appropriate colors and brightness for each light based on the vibe description.

Inputs: vibe (required), lights (required).

stop_animationA

Stop any currently running animation or effect. Stops background phase animations started by animate_lights, and also clears any native Hue effects (candle, fire, prism) on all lights.

Inputs: no named parameters.

update_user_profileA

Update a section of the user profile with new observations, preferences, or notes. Use this to record things the user tells you about their preferences, or to add evolution notes with suggestions.

Inputs: content (required), section (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.7/5.0

    Scored across 21 tools

    Disambiguation4/5

    Most tools have distinct purposes, but there is some overlap among set_vibe, set_scene, apply_saved_vibe, and animate_lights for creating ambience, and get_favorites overlaps with get_vibe_feedback. Descriptions mostly clear up the boundaries, so only a couple of tools could be confused.

    Naming Consistency4/5

    Names are consistently snake_case with verb-first patterns like list_*, set_*, get_*, save_*, and delete_*. Exceptions are hue_api and hue_auth, which lack a leading verb, but they are still descriptive and contextually appropriate.

    Tool Count3/5

    At 21 tools, this sits in the heavy range (16-25). The expanded vibe, feedback, and profile features justify many of them, but the count feels slightly overloaded compared to typical Hue control servers.

    Completeness4/5

    The surface covers lighting control (states, scenes, effects, animations) plus a full vibe lifecycle with rating, feedback, favorites, hints, and user profile management. Minor gaps exist such as no dedicated room/zone management or direct saved-vibe editing, but hue_api provides an escape hatch.

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      Not graded
      quality
      D
      maintenance
      Enables AI assistants to control Philips Hue smart lighting systems, including individual lights, groups, scenes, brightness, and color adjustments through natural language commands.
      -
    • A
      license
      B
      quality
      D
      maintenance
      Enables control of LIFX smart lights through natural language, including power control, color adjustment, lighting effects, and scene management using the LIFX HTTP API.
      9
      32 npm
      2
      ISC
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables control of Philips Hue lights through the Model Context Protocol, providing tools for turning lights on/off, setting brightness and color, and retrieving light status.
      1
      Apache 2.0
    • A
      license
      A
      quality
      D
      maintenance
      Enables discovery and control of Philips Hue lighting devices via a local bridge using the CLIP v2 API, without any cloud dependency.
      10
      MIT