Smart Bulb MCP Server
Provides tools for controlling Xiaomi-compatible smart bulbs (including Yeelight) over IP, with capabilities for turning power on/off, adjusting brightness, setting RGB or hex colors, and querying the current bulb state.
Click on "Deploy 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., "@Smart Bulb MCP Serverconnect to the mock bulb, turn it on, and set the color to blue"
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.
Smart Bulb MCP Server
A Model Context Protocol (MCP) server built with Node.js and TypeScript to control smart bulbs over IP. It supports:
Mock/Simulated Bulb: For local testing and development without physical hardware.
Yeelight/Xiaomi Bulb: Uses standard TCP port
55443(local control JSON-RPC protocol) to control real physical smart bulbs.
Features
Connect using IP: Dynamically connect to different bulbs on your local network.
Power Control: Turn the bulb on or off.
Brightness & Opacity: Adjust bulb brightness / intensity from 1% to 100%.
Color Control: Set colors using RGB coordinates or hexadecimal color codes.
State Queries: Fetch the current state of the bulb in real-time.
Related MCP server: Philips Hue MCP Service
Getting Started
1. Build the Server
First, install the dependencies and compile the TypeScript files:
# Install dependencies
npm install
# Compile the TypeScript files
npm run buildThe compiled files will be output to the dist/ directory.
2. Run / Development
You can run the server directly via standard I/O (Stdio):
# Run the built JS
npm start
# Compile and run in development mode
npm run devConfiguring with MCP Clients
To use this server with an MCP client (such as Claude Desktop or Cursor), add the server configuration to your configuration file.
For Claude Desktop
Edit your claude_desktop_config.json (typically located in %APPDATA%\Claude on Windows or ~/Library/Application Support/Claude on macOS):
{
"mcpServers": {
"smart-bulb": {
"command": "node",
"args": ["D:/Palwinder/mcp-server-bulb/dist/index.js"]
}
}
}Note: Replace D:/Palwinder/mcp-server-bulb/dist/index.js with the absolute path to dist/index.js on your machine.
Exposed MCP Tools
Once the server is connected, the host LLM will have access to the following tools:
1. connect_bulb
Connects to a bulb at a specified IP.
Arguments:
ip(string, required): IP address (e.g."192.168.1.15"or"127.0.0.1").type(enum["mock", "yeelight"], default:"mock"): Driver type. Use"mock"to test the server features without physical hardware, or"yeelight"for real Yeelight bulbs.port(number, optional): Port to use. Defaults to55443for Yeelight, and9999for Mock.
2. disconnect_bulb
Disconnects from the currently connected bulb.
Arguments: None.
3. get_bulb_state
Retrieves the connection status, power state, brightness/opacity percentage, and RGB color.
Arguments: None.
4. set_bulb_power
Turns the light bulb ON or OFF.
Arguments:
power(boolean, required):trueto turn ON,falseto turn OFF.
5. set_bulb_brightness
Sets the bulb's brightness / opacity.
Arguments:
brightness(number, required): Values from1to100.
6. set_bulb_color_rgb
Sets the color of the bulb using RGB values.
Arguments:
r(number, required): Red component0-255.g(number, required): Green component0-255.b(number, required): Blue component0-255.
7. set_bulb_color_hex
Sets the color of the bulb using a hex color code.
Arguments:
hex(string, required): Hex code (e.g.,"#FF0000"or"00FF00").
OpenAI Connection Client
We have built a client wrapper in src/openai-client.ts that allows you to feed prompts directly to OpenAI. OpenAI will then autonomously invoke the MCP tools to perform the actions on your smart bulb.
Setup and Running the Client
Set your OpenAI API Key: On Windows (PowerShell):
$env:OPENAI_API_KEY="your-actual-api-key"On macOS/Linux (Bash):
export OPENAI_API_KEY="your-actual-api-key"Run the Client:
Interactive CLI mode:
npm run clientThis opens a shell prompt. Try typing:
Connect to the mock bulb, turn it on, set its brightness to 80% and color to yellow.
One-off command mode: Pass your prompt directly as arguments:
npm run client -- "connect to the mock bulb, turn it on, and set color to blue"
Customizing the Model (Optional): By default, it uses
gpt-4o-mini. You can change it by setting theOPENAI_MODELenvironment variable:$env:OPENAI_MODEL="gpt-4o"
Developer Details & Architecture
The project has a modular architecture:
src/bulb/interface.ts: Defines the common contract (ISmartBulb) and state shape (BulbState).src/bulb/mock.ts: Simulated bulb instance that mimics network latency and state changes in memory.src/bulb/yeelight.ts: Implements a raw TCP line-based buffer parser to send and receive JSON-RPC packets directly from physical Yeelight WiFi bulbs without any third-party SDK dependencies.src/index.ts: Configures and mounts the@modelcontextprotocol/servertools, handling connection states and validation schemas.src/openai-client.ts: Launches the MCP server as a subprocess, loads all its tools dynamically, exposes them as OpenAI Functions, and handles the multi-turn conversational tool execution loop.
Built by 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
Control a Loxone Miniserver smart home: lights, blinds, climate, scenes and energy.
A TypeScript MCP server for Home Assistant, enabling programmatic management of entities, automati…
Full Spotify Web API coverage - albums, artists, playlists, player controls, and more.
AI-callable tools for API mocking, testing, monitoring, security, and automation.
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.-
- 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
- AlicenseNot gradedqualityCmaintenanceControls TAPO L530E smart light bulbs via MCP, supporting on/off, brightness, and color temperature, with local and remote AWS deployment.MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server for controlling LIFX smart lights, enabling AI assistants to manage power, color, brightness, effects, and scenes.MIT