HueMCP
Provides tools to discover and control Philips Hue lights, rooms, zones, and scenes via the local Hue bridge API, including adjusting brightness, color, effects, and recalling scenes.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@HueMCPturn on the living room lights"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
HueMCP
An MCP server that lets Claude (or any MCP client) discover and control a Philips Hue bridge over its local CLIP v2 HTTP API. No cloud account needed — all traffic is LAN-local to your bridge.
Tool surface
Tool | Purpose |
| Every light with on/off, brightness, colour, owner device |
| Rooms with their |
| Zones with their |
| Scenes, optionally filtered to one room/zone |
| Update one light |
| Update all lights in a room or zone |
| Recall a scene |
| Briefly pulse a light to locate it |
| Basic identity of the bridge |
| Generic escape hatch — raw bridge payload for any resource type |
brightness is a percent (0–100). color_temp_mirek is a CIE mired value
(typical range 153–500 ≈ 6500K–2000K — the per-light valid range is reported
by list_lights()). color_xy is [x, y] in CIE 1931 space, clamped to the
light's gamut.
list_lights() also reports per-light capability: effects.available
(e.g. candle, fire, prism, sparkle, opal, glisten), timed_effects.available
(sunrise, sunset), and — for gradient lightstrips — a gradient block
with points_capable, pixel_count, and mode_values. Pass matching values
to set_light to drive them: effect="candle", gradient_points=[[x,y], ...],
timed_effect="sunrise", etc.
Related MCP server: Philips Hue MCP Server
Requirements
Python 3.10+
A Hue bridge reachable on your LAN
An application key — generated by pressing the link button and POSTing to
/api(see "Bridge-side setup" below)An MCP-capable client — these instructions assume Claude Code
Install
git clone <your-fork-url> HueMCP
cd HueMCP
python3 -m venv .venv
.venv/bin/pip install -e .
cp .env.example .env
# edit .env to set HUE_BRIDGE_HOST and HUE_APPLICATION_KEYSmoke test:
.venv/bin/python scripts/smoke_test.pyRegister with Claude Code (user scope, available in every project):
claude mcp add huemcp /absolute/path/to/HueMCP/.venv/bin/huemcp -s userBridge-side setup
Find your bridge's IP at https://discovery.meethue.com or in the Hue app (Settings → My Hue System).
Press the bridge's physical link button.
Within 30 seconds, request an application key:
curl -sk -X POST https://<bridge-ip>/api \ -H 'Content-Type: application/json' \ -d '{"devicetype":"huemcp#'"$(hostname)"'", "generateclientkey":true}'Copy the
usernamevalue from the response intoHUE_APPLICATION_KEY.
TLS
The bridge presents a self-signed certificate signed by the Philips Hue root CA.
By default HUE_VERIFY_TLS=0 and the client skips verification — appropriate
for a LAN-local device. To verify properly, install the Hue root CA into your
trust store and set HUE_VERIFY_TLS=1, or pin a CA bundle by setting
HUE_VERIFY_TLS=/path/to/ca.pem.
Configuration reference
Variable | Default | Purpose |
| (required) | Hostname or IP of the bridge |
| (required) | Application key from the bridge |
|
|
|
|
| Per-request timeout in seconds |
License
MIT — see LICENSE.
Available Tools
10 toolsactivate_sceneA
Recall a scene — applies its stored light states to its target group.
actionisactive(default),dynamic_palette(cycles through the scene's palette), orstatic(one-shot apply with no dynamics).brightness(0–100) overrides the scene's stored brightness.transition_msoverrides the scene's default fade duration.
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | active | |
| scene_id | Yes | ||
| brightness | No | ||
| transition_ms | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the key behaviors (applying states, overrides, action types) but does not mention error handling, side effects, or prerequisites like scene existence.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with a clear purpose followed by a bulleted list of parameters. Every sentence adds value with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (4 params, no annotations, output schema present), the description covers main behavior and parameter meanings. It lacks details on error handling or invalid inputs but is generally sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description adds essential meaning: action values, brightness range (0–100), transition_ms override. It compensates well for the lack of parameter descriptions in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Recall a scene — applies its stored light states to its target group' with a specific verb and resource. It distinguishes from sibling tools like list_scenes, set_light, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the action parameter options and brightness/transition overrides, providing clear context for use. However, it lacks explicit exclusions or when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bridge_infoA
Return basic bridge identity (name, id, software version, time-zone).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It transparently discloses the tool's behavior: it returns basic identity information and implies a read-only, non-destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the action and resource, and contains no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no parameters and a simple output, the description is complete. An output schema exists, so return value explanation is unnecessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters (0 params), so the baseline is 4. The description does not need to add parameter meaning, and the schema already covers the empty set.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Return' and the resource 'basic bridge identity' with specific fields (name, id, software version, time-zone). It is distinct from sibling tools which operate on scenes, lights, rooms, etc.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving bridge identity, but does not explicitly state when to use this tool versus alternatives or provide exclusions. Given the unique resource, it is adequate but lacks explicit guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_resourceA
Generic escape hatch — fetch a Hue resource by type, optionally by id.
rtype is a CLIP v2 resource type, e.g. light, room, zone, scene,
grouped_light, device, bridge, motion, temperature, button,
behavior_instance, smart_scene. Returns the raw bridge payload — useful
when you need fields the higher-level tools don't expose.
| Name | Required | Description | Default |
|---|---|---|---|
| rid | No | ||
| rtype | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It describes the tool as a read operation ('fetch'), indicating it is safe and non-destructive. While it does not elaborate on idempotency or side effects, the behavior is adequately disclosed for a read-only tool. The presence of an output schema covers return format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the main purpose. Every sentence contributes: the first line states the action, the list enumerates valid types, and the final sentence explains when to use it. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's generic nature, low parameter count, and presence of an output schema, the description is complete. It explains the tool's role as an escape hatch, covers the key parameters, and provides usage context. No critical information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description adds critical value by listing example rtype values ('light', 'room', etc.) and noting that rid is optional. This goes beyond the bare schema, which only defines types. However, it could provide more detail on the rid format or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'fetch a Hue resource by type, optionally by id', using a specific verb and resource. It contrasts with higher-level tools by calling itself a 'generic escape hatch' and lists many resource types, distinguishing it from siblings like list_lights or list_rooms.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when raw bridge payload is needed ('useful when you need fields the higher-level tools don't expose'), but does not explicitly state when not to use it or provide direct alternatives. The context is clear but could be more prescriptive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
identify_lightA
Make a light breathe (briefly pulse) so you can physically locate it.
| Name | Required | Description | Default |
|---|---|---|---|
| light_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full behavioral burden. It accurately describes a non-destructive, temporary pulsing action. It does not mention permissions or state restoration, but for a simple identification tool this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that conveys the purpose and action without extraneous words. It is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema (not shown), so return value explanation is unnecessary. The description covers the core function; however, missing details like prerequisites (e.g., light must be on) or error cases slightly reduce completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description should explain parameters. The single parameter 'light_id' is not elaborated on, though its name and context make the meaning clear. A brief note on how to obtain the ID (e.g., from list_lights) would add value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('breathe') and resource ('light'), clearly stating the outcome ('physically locate it'). It distinguishes this tool from siblings like 'set_light' or 'list_lights' by focusing on physical identification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for locating a light physically, but lacks explicit when-not-to-use or alternative guidance. While the purpose is clear, adding context like 'Use when you need to find which bulb corresponds to a given light_id' would improve it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_lightsA
List every light on the bridge with on/off state, brightness, colour, and owner.
owner.rid points to the parent device — useful when one device exposes
multiple light services. To find which room a light belongs to, cross-reference
the device id against list_rooms() children.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Discloses output fields and their interpretation (owner.rid points to parent device). Clearly a read-only list operation without side effects, appropriately described.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences with no redundancy. First sentence defines core action, subsequent sentences add valuable context without fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter list tool with output schema, description explains key fields and cross-referencing hints thoroughly. No missing information needed for agent to understand usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters defined in input schema, so description bears no responsibility for parameter semantics. Schema coverage is 100%, meeting baseline for 0-parameter tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'List every light on the bridge' with specific attributes (on/off state, brightness, colour, owner). Distinguishes from sibling list tools by providing unique output details and cross-referencing with list_rooms.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides post-retrieval guidance (owner.rid, cross-reference with list_rooms) but does not explicitly state when to use this tool over siblings or when not to use it. Implied usage through resource specificity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_roomsA
List rooms with their grouped_light_id (use with set_group) and member devices.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries the full burden. It discloses what the tool returns (rooms with grouped_light_id and member devices), but does not mention if it's a read-only operation, any authentication needs, or potential side effects. Adequate for a simple listing but not fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that conveys the core purpose and key output, with no unnecessary words. It is perfectly concise and effectively front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters and the existence of an output schema, the description is fairly complete. It could mention that the tool is read-only or safe, but for a simple list tool, the current coverage is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so schema coverage is 100% trivially. The description adds no parameter info because none exist. Baseline 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists rooms and specifies key return fields (grouped_light_id and member devices), with a hint for integration with set_group. This distinguishes it from sibling tools like list_lights and list_scenes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a usage hint for set_group but lacks explicit guidance on when to use this tool vs siblings like list_zones or when not to use it. The hint is helpful but incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_scenesA
List scenes. If group_id is given (a room or zone id), only scenes targeting
that group are returned. Use the returned id with activate_scene.
| Name | Required | Description | Default |
|---|---|---|---|
| group_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description is minimal: it lists scenes and optionally filters by group_id. It does not disclose any side effects, permission needs, rate limits, or pagination, but the behavior is straightforward for a list operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no waste: the first states the verb and resource, the second adds conditional behavior and usage guidance. Front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description covers the primary behavior and parameter effect. It implies what happens without group_id and links to activate_scene. Minor omission of sorting, limits, or errors is acceptable for a simple list.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema coverage, the description fully compensates by explaining group_id as a room or zone id and the filtering behavior, adding meaning beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and resource 'scenes', and distinguishes from siblings like list_lights and activate_scene by specifying the resource and optional filtering.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool (to list scenes, optionally filtered by group_id) and links to activate_scene, but does not explicitly state when not to use it or mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_zonesA
List zones with their grouped_light_id (use with set_group) and member lights.
Zones differ from rooms: a light belongs to exactly one room but can be in many zones (e.g. a "Downstairs" zone spanning Kitchen + Living room).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so description carries the full burden. It describes the output (zones with ids and member lights) and distinguishes from rooms, but does not mention any behavioral traits like idempotency, rate limits, or permissions. However, the tool appears to be a read-only list operation, so the description is adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise, well-structured sentences. The first sentence states the primary action and important fields; the second provides a clarifying distinction from rooms. No unnecessary verbiage.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no parameters and presence of an output schema, the description is complete. It explains what the tool returns (grouped_light_id and member lights), its relationship to set_group, and how zones differ from rooms. No aspect is missing for a simple list tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist (input schema is empty). Schema coverage is trivially 100%. The description does not need to add parameter info, and its focus on output and usage is sufficient. Baseline for 0 parameters is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists zones with grouped_light_id and member lights, and explicitly distinguishes zones from rooms, which differentiates it from sibling tools like list_rooms.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context for when to use (e.g., to get grouped_light_id for set_group, or to view member lights). Includes comparison with rooms to guide tool selection, though no explicit when-not-to-use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_groupA
Control all lights in a room or zone at once via its grouped_light_id.
Get this id from list_rooms() or list_zones() (grouped_light_id field).
Same parameters as set_light, minus per-light effects.
| Name | Required | Description | Default |
|---|---|---|---|
| on | No | ||
| color_xy | No | ||
| brightness | No | ||
| transition_ms | No | ||
| color_temp_mirek | No | ||
| grouped_light_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses that it controls all lights (implying mutation) and excludes per-light effects, but does not explain what per-light effects are or other potential behaviors like error handling or limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, extremely concise, and front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (reducing need to describe returns) and 6 parameters, the description covers the essential: what it does, how to get the id, and relation to set_light. Could add more detail on behavior (e.g., effect on lights), but is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so description must compensate. It adds meaning by stating 'Same parameters as set_light, minus per-light effects,' which provides context by reference, but does not individually explain each parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool controls all lights in a room or zone via grouped_light_id, and distinguishes itself from set_light by noting it excludes per-light effects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly tells when to use (control all lights in a room/zone) and how to obtain the grouped_light_id from list_rooms/list_zones. It does not explicitly state when not to use, but the distinction from set_light is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_lightA
Update one light. Pass only the attributes you want to change.
Use list_lights() to discover what each light supports — it returns
effects.available, timed_effects.available, and (for gradient strips)
a gradient block with points_capable and mode_values.
brightnessis 0–100 (percent). Setting brightness on an off light does NOT turn it on; passon=Trueas well.color_temp_mirekis the CIE mired value; the per-light valid range is reported bylist_lights()ascolor_temp_range_mirek(commonly 153–500, i.e. ~6500K–2000K). Setting this clears any active colour.color_xyis a 2-element list[x, y]in CIE 1931 colour space, clamped to the light's gamut. Setting this clears any active colour temperature.effectis one of the values fromeffects.available(e.g.no_effect,candle,fire,prism,sparkle,opal,glisten). Passno_effectto stop a running effect.gradient_pointsis a list of[x, y]CIE 1931 points (typically 2–5, capped by the light'sgradient.points_capable). Only meaningful for gradient-capable strips like the Hue Play Gradient lightstrip.gradient_modeis one of the light'sgradient.mode_values—interpolated_palette(default smooth blend),interpolated_palette_mirrored,random_pixelated, orsegmented_palette.timed_effectissunrise,sunset, orno_effect. Usetimed_effect_duration_msto set how long the effect runs.transition_msis the fade duration in milliseconds for on/off, dimming, and colour changes.
| Name | Required | Description | Default |
|---|---|---|---|
| on | No | ||
| effect | No | ||
| color_xy | No | ||
| light_id | Yes | ||
| brightness | No | ||
| timed_effect | No | ||
| gradient_mode | No | ||
| transition_ms | No | ||
| gradient_points | No | ||
| color_temp_mirek | No | ||
| timed_effect_duration_ms | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries full burden. It explicitly discloses key behaviors: brightness doesn't turn on the light, color settings clear each other, effect values are listed, gradient points only work on capable strips, and transition_ms controls fade duration.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear lead sentence and bullet-point parameter details. It is lengthy but necessary given 11 parameters. Minor redundancy exists (e.g., 'Pass only the attributes you want to change' could be implicit).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the existence of an output schema and no annotations, the description covers all necessary information: parameter semantics, behavioral constraints, and cross-references to list_lights for capability discovery. It is complete for a tool with 11 parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully compensates by detailing every parameter: brightness range 0-100, color_temp_mirek valid range from list_lights, color_xy as [x,y] in CIE 1931, effect examples, gradient_points format, gradient_mode values, timed_effect options, and transition_ms in milliseconds.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Update one light. Pass only the attributes you want to change,' which is a specific verb+resource statement. It clearly distinguishes from sibling tools like list_lights and set_group.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description advises using list_lights() to discover light capabilities and notes that setting brightness on an off light does not turn it on. However, it does not explicitly state when not to use this tool or name alternatives for group/scene operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
10 tool updates
v0.1.0- First observed
activate_scene - First observed
bridge_info - First observed
get_resource - First observed
identify_light - First observed
list_lights - First observed
list_rooms - First observed
list_scenes - First observed
list_zones - First observed
set_group - First observed
set_light
TDQS
Each tool has a clear, distinct purpose: listing resources, controlling lights individually or by group, activating scenes, identifying devices, and fetching bridge info. The generic get_resource is explicitly an escape hatch for unmapped resources.
All tool names follow a consistent verb_noun pattern (e.g., list_lights, set_light, activate_scene) using lowercase and underscores. No mixed conventions or vague verbs.
10 tools is well-scoped for a Hue bridge server, covering key operations (listing, setting, scenes, identification) without unnecessary bloat or missing essentials.
Covers core lighting control well with CRUD-like operations but lacks dedicated tools for sensors or scene creation. The generic get_resource mitigates minor gaps, and scene management relies on the app, which is reasonable.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Control a Loxone Miniserver smart home: lights, blinds, climate, scenes and energy.
Unofficial integration! ## ✨ Key Features ### 💰 Financial Intelligence - **Smart Charging Cost An…
Control your Tesla from your AI assistant - climate, charging, access, and security.
A TypeScript MCP server for Home Assistant, enabling programmatic management of entities, automati…
Related MCP Servers
- FlicenseAqualityDmaintenanceEnables control of Philips Hue lights through VS Code Copilot or Claude Desktop using natural language commands. Supports turning lights on/off, adjusting brightness, changing colors, and listing available lights on your Hue Bridge.2-
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to control Philips Hue smart lighting systems, including individual lights, groups, scenes, brightness, and color adjustments through natural language commands.-
- AlicenseNot gradedqualityDmaintenanceEnables 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.1Apache 2.0
- AlicenseAqualityDmaintenanceEnables control of Philips Hue lights via Bluetooth LE directly from Claude, without requiring a Hue Bridge or internet connection.81MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/mbruton/HueMCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server