Smart Bulb MCP Server
Smart Bulb MCP Server
Un servidor de Model Context Protocol (MCP) creado con Node.js y TypeScript para controlar bombillas inteligentes por IP. Enta:
Mock/Bombilla simul: Para pruebas de locas y desaroollo sin hardware físico.
Bombilla Yeelight/Xiaomi: Usa el puero TCP estándar
5543(protocolo JSON-RPC de contro local) para controlar bombillas inteligentes físicas reales.
Características
Onexión por IP: Conecta de forma dinámica a distitas bombillas en tu red loca.
Control de encendido: Enciede o apaga la bombilla.
Brillo y opacid: Ajusa el brillo / intensidad de la bombilla de un 1 % a un 100 %.
Control de color: Establece colores mediante coordenadas RGB o códigos de color hexadecimal.
Consulas de estado: Obtiens el estado actua de la bombilla en tiempo rea.
Related MCP server: wiz-light-mcp
Primers pasos
1. Compilar el servidor
Primero, insta las dendecias y compila los achivos de TypeScript:
# Install dependencies
npm install
# Compile the TypeScript files
npm run buildLos archivos compilados se guardarán en el directo dist/.
2. Ejecución / Desarrollo arro
Puedes ejecutar el servidor mediante entada/salida estádar (Stdio):
# Run the built JS
npm start
# Compile and run in development mode
npm run devConfiguración con clientes MCP
Para usar este servidor con un cliente MCP (como Claude Desktop o Cursor), añade la configuración del servidor a tu archivo de config.
Para Claude Desktop
Edito tu claude_desktop_config.json (casi normalmente en %APPDATA%\Claude en Windows o ~/Library/Application Support/Claude en macOS):
{
"mcpServers": {
"smart-bulb": {
"command": "node",
"args": ["D:/Palwinder/mcp-server-bulb/dist/index.js"]
}
}
}Nota: Reempla D:/Perswinder/mcp-server-bulb/dist/index.js con la ruta absoluta a dist/index.js en tu máquina.
Herramientas MCP expuestas
Una vez que el servidor está conectado, el LLM anfitrión tendrá acceso a las siguientes herramientas:
1. connect_bulb
Conecta a una bombilla en una IP especificada.
Argumentos:
ip(string, obligatorio): dirección IP (p. ej.,"192.168.1.15"o"127.0.0.1").type(enum["mock", "yeelight"], por defecto:"mock"): tipo de controlador. Usa"mock"para probar las funciones del servidor sin hardware físico, o"yeelight"para bombillas Yeelight reales.port(number, opcional): puerto a utilizar. Por defecto,55443para Yeelight y9999para Mock.
2. disconnect_bulb
Desconecta la bombilla actualmente conectada.
Argumentos: Ninguno.
3. get_bulb_state
Obtiene el estado de conexión, estado de encendido/apagado, porcentaje de brillo/opacid y el color RGB.
Argumentos: Ninguno.
4. set_bulb_power
Enciende o agapa la bombilla.
Argumentos:
pouer(boolean, obligatorio):truepara encerar,falsepara agapar.
5. set_bulb_brightness
Establece el brolo/opacid de la bombilla.
Argés:
bragtness(number, obligatorio): valore desde1a100.
6. set_bulb_color_egb
Establece el color de la bombilla usando valores RGB.
Argumentos:
r(number, obligatorio): componente rojo0-255.g(number, obligatorio): componente verde0-255.b(number, obligatorio): componente azul0-255.
7. set_bulb_color_hex
Establece el color de la bombilla usando un códigode color hexadecimal.
Argumentos:
hex(string, obligatorio): códigode hexadecimal (p. ej.,"#FF0000"o"00FF00").
Cliente de conexión de OpenAI
Hemos creado un envoltorio de cliente (un cliente) en src/open-ai-client.ts que te permit directar prompts aiento directo a OpenAi. Después, OpenAi invocará de forma autónomam las herramintas MCP para llevar a las acciones sobre tu bombilla int.
Configuración y ejecución del cliente
Configura tu clave de OpenAi: En Windows (PowerShell):
$env:OPENAI_API_KEY="your-actual-api-key"En macOS/Linux (basa):
export OPENAI_API_KEY="your-actual-api-key"Ejeecuta el cliente:
Modo CLI interactivo:
npm run clientEsto abre un terminal. Prueba a escribir:
Conecta la bombilla mock, enciende la, pon su brillo al 80 % y color amarillo.
Modo de comando: Pasa el prompt direct como argumento:
npm run client -- "connect to the mock bulb, turn it on, and set color to blue"
Personalizar el medio (opcional): Por defecto, usa
gtp-4o-mini. Puedes cambiarlo configurando la variable de entornoOPENAI_MODEL:
$env:OPENAI_MODEL="gpt-4o"Detalles de desarrollo y arquitectura
El proyecto tiene una arquitectura:
src/bulb/interface.ts: Defyne el contrato común (ISmartBulb) y la forma del estado (BulbState).src/b ulb/mock.ts: Instancia de bombilla simulada que imita latencia de red y cambios de estado en memoria.src/bulb/yeelight.ts: Implementa un analizador de búfer de líneas basado en TCP para enviar y recibir paquete JSON-RPC directamente de las bombillas yeelight WiFi físicas sin dependencias de SDK de terceros.src/index.ts: Configura y monta las herramients de@modelcontextprotocol/server, gestionando los estados de conexión y los esquemas de validación.src/openai-client.ts: Lans el servidor MCP como subproces o, carg dinamicamente toda sus herramientas, las expose como funciones OpenAi y gestiona el bucle convercional de ejecución de herramientas.
Hecho por Palwinder Singh
Available Tools
7 toolsconnect_bulbA
Connect to a smart bulb at a given IP address. Supports both real Yeelight bulbs and mock bulbs for testing.
| Name | Required | Description | Default |
|---|---|---|---|
| ip | Yes | The IP address of the smart bulb (e.g., '192.168.1.15' or '127.0.0.1') | |
| port | No | Optional TCP port. Defaults to 55443 for Yeelight and 9999 for mock. | |
| type | No | The bulb driver type. Use 'mock' for local simulation testing, and 'yeelight' for actual Yeelight WiFi bulbs. | mock |
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 of behavioral disclosure. It does not mention side effects, error handling, authentication requirements, timeouts, or whether establishing a connection is required before other operations. The only extra behavioral hint is the mock/real support, which is more about parameter semantics than behavior. This is a significant gap for a connection tool.
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 with zero fluff. The core purpose is front-loaded, and the second sentence adds relevant context about supported bulb types. Every word earns its place.
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 is simple (3 params, 1 required) and the schema is complete, so the description covers the basics. However, it does not mention that the connection is a prerequisite for the sibling bulb-control tools or that a disconnect_bulb exists, leaving the lifecycle unclear. Some context about the overall workflow 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 description coverage is 100% — all three parameters (ip, port, type) are fully documented with descriptions and defaults. The description adds no information beyond what the schema already provides; the mention of mock vs. real simply echoes the enum descriptions. Baseline 3 applies because the schema does the heavy lifting.
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 specific action ('Connect to a smart bulb at a given IP address') and the resource (smart bulb). It also mentions support for real Yeelight and mock bulbs, which distinguishes it from sibling tools that handle state, power, brightness, and color. This is a precise verb+resource statement with no ambiguity.
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 gives partial guidance by noting that mock bulbs are for testing, which helps with the type parameter, but it does not explicitly state when to use this tool versus its siblings (e.g., before get_bulb_state or set_bulb_*). The usage context is implied rather than clearly articulated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
disconnect_bulbA
Disconnect from the currently active smart bulb.
| Name | Required | Description | Default |
|---|---|---|---|
No 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 of behavioral disclosure. It states the action and scope ('disconnect from the currently active smart bulb') but does not disclose edge-case behavior: what happens if no bulb is active, whether disconnecting affects the bulb's power state, or whether a reconnect is required afterward. Adequate but not rich.
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?
A single, front-loaded sentence that says exactly what is needed with zero waste. The action and target are stated in the first words, which is ideal for a simple tool. Every word earns its place.
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 low complexity — 0 parameters, no output schema, and no annotations — the description is largely sufficient for an agent to invoke it correctly. The only gaps are edge-case expectations (undefined behavior when no bulb is active, effect on bulb power), which are minor for this simple disconnection action.
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?
The tool has zero parameters, so the baseline is 4. The schema is trivially 100% covered since there are no parameters to document. The description adds marginal value by clarifying the implicit target ('currently active' bulb), which is the only semantic the agent needs beyond the empty 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 states a specific verb ('Disconnect') and resource ('the currently active smart bulb'). It clearly distinguishes itself from siblings like connect_bulb, get_bulb_state, and the set_* family — the action and scope are unambiguous and the qualifier 'currently active' tells the agent exactly which target it acts on.
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?
Usage is implied rather than explicit. The description conveys this is the counterpart to connect_bulb, but it does not explicitly say when to choose this over alternatives or what precondition is required (e.g., that a bulb must be active). For a simple 0-param tool the context is mostly inferable, but no exclusion or alternative guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_bulb_stateA
Retrieve the current state (power status, brightness/opacity, color) of the connected smart bulb.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavioral traits. The verb 'Retrieve' clearly implies a read-only, side-effect-free operation, and it lists the specific state aspects returned. However, it does not explicitly state failure modes (e.g., what happens if no bulb is connected) or any additional behavioral nuances.
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?
A single, well-structured sentence that front-loads the verb and resource, and enumerates the state fields without any filler. Every word earns its place.
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 is simple (no parameters, no output schema), and the description adequately conveys what it returns. However, it could optionally mention that the tool operates on the connected bulb, implying a connection prerequisite, and might briefly note the absence of side effects. Still, for a low-complexity getter this is nearly complete.
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?
The tool has zero parameters, so the baseline for parameter semantics is 4. The description adds value by clarifying what 'state' means (power, brightness/opacity, color), which gives the agent context about the expected return content even though the schema has no fields to document.
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 the specific verb 'Retrieve' and clearly identifies the resource ('current state' of the smart bulb) and the attributes included (power status, brightness/opacity, color). This distinguishes it from sibling set_* tools and from connection tools.
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 it is used when one needs to know the current state of the connected bulb, but it does not explicitly contrast with the set_* tools or mention a prerequisite like being connected. The connection requirement is only inferred from the sibling connect_bulb.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_bulb_brightnessA
Set the brightness (intensity/opacity) of the connected smart bulb.
| Name | Required | Description | Default |
|---|---|---|---|
| brightness | Yes | Brightness percentage (1 to 100). This also controls the bulb's opacity/intensity. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral load. It only states that brightness is set, without disclosing side effects (e.g., whether it turns on the bulb if off, or requires connection). No error conditions or limitations are mentioned. Minimal behavioral disclosure.
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?
One sentence, with the action verb first. No fluff or redundant content. Highly concise and effective.
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?
Tool is simple with a single parameter and no output schema. However, the description omits context such as requiring the bulb to be connected or whether brightness changes override power state. For a minimal setter, it's adequate but not fully complete given no annotations to compensate.
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 100%, with the brightness parameter fully described including range and meaning. The description adds only redundant phrasing like 'intensity/opacity', which is already in the schema. No new semantic information is provided beyond 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?
States a specific verb and resource: 'Set the brightness' of the smart bulb. Distinguishes from sibling tools like set_bulb_power and set_bulb_color by focusing on brightness/intensity/opacity. Clear and unambiguous.
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?
No explicit guidance on when to use this tool versus alternatives. The description doesn't mention that set_bulb_power handles on/off or that color tools handle color. Usage is implied by the name but not explicitly routed. Basic clarity without exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_bulb_color_hexA
Set the color of the connected smart bulb using a hexadecimal color code (e.g. '#FF0000' or '00FF00').
| Name | Required | Description | Default |
|---|---|---|---|
| hex | Yes | Hexadecimal color code, with or without leading '#' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It states the core action ('set the color') which signals mutation, but it does not mention any prerequisites like requiring a connection, nor possible failure modes for invalid hex codes. It also omits whether the change is reversible, though that is lightly implied. The description is minimal but accurate.
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, front-loaded sentence that names the action, resource, and format without any fluff. The examples are concise and directly relevant, making it easy for an agent to parse quickly.
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 simple tool with one parameter and no output schema, the description covers the essential action and format. However, given it is a mutation and there are sibling tools like connect_bulb, the description could note that the bulb must be connected, and it could clarify behavior on invalid hex input. These omissions are minor but would improve 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?
The input schema already fully describes the hex parameter as 'Hexadecimal color code, with or without leading #', so schema coverage is 100%. The tool description repeats this information with examples, adding little beyond what the schema provides. The baseline of 3 is appropriate since the description does not enrich the parameter meaning substantially.
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 action (Set), the resource (color of the connected smart bulb), and the method (using a hexadecimal color code) with concrete examples ('#FF0000' or '00FF00'). This immediately differentiates it from the sibling tool set_bulb_color_rgb, which likely uses RGB tuples.
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 no guidance on when to prefer this tool over alternatives such as set_bulb_color_rgb or when it is inappropriate to use. It does not mention prerequisites (e.g., the bulb must be connected) or warn against using it with RGB values, leaving the agent to infer usage context from the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_bulb_color_rgbB
Set the color of the connected smart bulb using RGB values (0-255).
| Name | Required | Description | Default |
|---|---|---|---|
| b | Yes | Blue component (0-255) | |
| g | Yes | Green component (0-255) | |
| r | Yes | Red component (0-255) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full burden of behavioral disclosure. It only states the action and value range, repeating schema information. It does not disclose side effects, connection requirements, error behavior, or idempotency, leaving significant behavioral context unclear.
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, front-loaded sentence of about ten words. It states the action and key constraint without any waste, making it maximally concise and structured for quick agent parsing.
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 is simple with no output schema, but critical context is missing: the description says 'connected smart bulb' but never instructs that the bulb must be connected first (a prerequisite given sibling connect_bulb). It also omits error handling scenarios. These gaps are significant for a device-control 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?
The input schema fully describes each parameter (r, g, b as numbers 0-255) with 100% coverage, so the baseline is 3. The description adds only 'RGB values (0-255)', which repeats the schema range and adds no new meaning beyond what is already documented.
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 action (set), the resource (color of the connected smart bulb), and the method (RGB values 0-255). It distinguishes from sibling set_bulb_color_hex by specifying RGB, making the tool's purpose unambiguous.
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?
No guidance is provided on when to use this tool versus alternatives like set_bulb_color_hex, nor does it mention prerequisites such as connecting the bulb first. The agent must infer usage solely from the name and context, which is insufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_bulb_powerB
Turn the connected smart bulb on or off.
| Name | Required | Description | Default |
|---|---|---|---|
| power | Yes | true to turn the bulb ON, false to turn it OFF |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavior. It only states the on/off action, which is already implied by the tool name and the boolean parameter. It does not mention prerequisites (e.g., bulb must be connected), side effects, error conditions, or whether it sets an absolute state vs. toggles. This is a significant gap for a state-changing tool.
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, tight sentence that is immediately clear and front-loaded with the action. There is no redundancy or filler; every word earns its place.
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 low complexity (one boolean parameter, no output schema, no nested objects) and complete schema coverage, the description is mostly adequate. It clearly states the core function. However, it could briefly mention that the bulb must be connected or that the power is set to the absolute state, but these are minor for such a simple 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?
Schema description coverage is 100%, and the parameter description in the schema already explains that `true` turns the bulb ON and `false` turns it OFF. The tool description adds no additional meaning or context beyond what the structured schema provides, so the baseline of 3 is appropriate.
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 ('Turn') and clearly identifies the resource ('the connected smart bulb') and the action ('on or off'). It is unambiguous and distinct from sibling tools like set_bulb_brightness or set_bulb_color_rgb, even without naming them.
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 offers no guidance on when to use this tool versus alternatives. It does not state conditions like 'when you want to change the bulb's power state' or exclude cases where other setters would be more appropriate. The agent is left to infer usage from the tool name and parameter.
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.
7 tool updates
v1.0.0- First observed
connect_bulb - First observed
disconnect_bulb - First observed
get_bulb_state - First observed
set_bulb_brightness - First observed
set_bulb_color_hex - First observed
set_bulb_color_rgb - First observed
set_bulb_power
TDQS
Scored across 7 tools
Tools have distinct purposes: connect, disconnect, state retrieval, and setting power, brightness, and color. The only overlap is between set_bulb_color_rgb and set_bulb_color_hex, which serve the same function with different input formats, but their descriptions clearly differentiate them, causing minimal confusion.
All tool names follow a consistent verb_noun pattern (e.g., connect_bulb, get_bulb_state, set_bulb_power). The naming style is uniform with snake_case and clear action-target structure, making the API predictable and easy to navigate.
With 7 tools, the set is well-scoped for a smart bulb control server. Each tool addresses a core operation (connection, state, power, brightness, color) without redundant or excessive entries, fitting comfortably within the ideal 3-15 range.
The server covers essential smart bulb operations: connection management, state retrieval, power, brightness, and color control. A minor gap is the lack of color temperature or scene settings, which are common on smart bulbs, but the core workflows are fully supported and no critical dead ends exist.
Maintenance
Related MCP Connectors
Yeelight device discovery, state, control, and scene execution.
Control a Loxone Miniserver smart home: lights, blinds, climate, scenes and energy.
Yeelight home metadata and guarded management workflows.
A TypeScript MCP server for Home Assistant, enabling programmatic management of entities, automati…
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables control of smart lights through MQTT messaging protocol, supporting operations like turning lights on/off and adjusting brightness levels from 0-100.-
- AlicenseAqualityDmaintenanceMCP server for controlling WiZ smart lights locally via UDP: discover bulbs, power control, color, temperature, and scenes.10MIT
- FlicenseNot gradedqualityDmaintenanceEnables control of Yeelight smart lights over local LAN, supporting on/off, brightness, color, temperature, and auto discovery.-
- AlicenseAqualityBmaintenanceEnables local network control of Tuya and Smart Life smart home devices without cloud round-trips, including power, brightness, color, and raw datapoint operations.9MIT