Skip to main content
Glama

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 build

Los 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 dev

Configuració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, 55443 para Yeelight y 9999 para 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): true para encerar, false para agapar.

5. set_bulb_brightness

Establece el brolo/opacid de la bombilla.

  • Argés:

    • bragtness (number, obligatorio): valore desde 1 a 100.

6. set_bulb_color_egb

Establece el color de la bombilla usando valores RGB.

  • Argumentos:

    • r (number, obligatorio): componente rojo 0 - 255.

    • g (number, obligatorio): componente verde 0 - 255.

    • b (number, obligatorio): componente azul 0 - 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

  1. 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"
  2. Ejeecuta el cliente:

    • Modo CLI interactivo:

      npm run client

      Esto 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"
  3. Personalizar el medio (opcional): Por defecto, usa gtp-4o-mini. Puedes cambiarlo configurando la variable de entorno OPENAI_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 tools
connect_bulbA

Connect to a smart bulb at a given IP address. Supports both real Yeelight bulbs and mock bulbs for testing.

NameRequiredDescriptionDefault
ipYesThe IP address of the smart bulb (e.g., '192.168.1.15' or '127.0.0.1')
portNoOptional TCP port. Defaults to 55443 for Yeelight and 9999 for mock.
typeNoThe bulb driver type. Use 'mock' for local simulation testing, and 'yeelight' for actual Yeelight WiFi bulbs.mock

TDQS

A3.5/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

NameRequiredDescriptionDefault
brightnessYesBrightness percentage (1 to 100). This also controls the bulb's opacity/intensity.

TDQS

A3.5/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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').

NameRequiredDescriptionDefault
hexYesHexadecimal color code, with or without leading '#'

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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).

NameRequiredDescriptionDefault
bYesBlue component (0-255)
gYesGreen component (0-255)
rYesRed component (0-255)

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

NameRequiredDescriptionDefault
powerYestrue to turn the bulb ON, false to turn it OFF

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

  1. 7 tool updatesv1.0.0
    • First observedconnect_bulb
    • First observeddisconnect_bulb
    • First observedget_bulb_state
    • First observedset_bulb_brightness
    • First observedset_bulb_color_hex
    • First observedset_bulb_color_rgb
    • First observedset_bulb_power

TDQS

A3.7/5.0

Scored across 7 tools

Disambiguation4/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivitySlowing
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    MCP server for controlling WiZ smart lights locally via UDP: discover bulbs, power control, color, temperature, and scenes.
    10
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables local network control of Tuya and Smart Life smart home devices without cloud round-trips, including power, brightness, color, and raw datapoint operations.
    9
    MIT