Skip to main content

MCP server for controlling WLED devices

Project description

WLED MCP Server

A Model Context Protocol (MCP) server for controlling WLED devices through LLM interactions. This server enables Claude and other LLMs to directly control your WLED smart lighting devices with natural language commands.

Features

  • Device Control: Turn WLED devices on/off, adjust brightness (0-255)
  • Color Management: Set RGB colors with precise control
  • Effects & Animation: Access 100+ built-in lighting effects with customizable speed and intensity
  • Presets: Create, list, and activate saved lighting presets
  • Palettes: Browse and apply color palettes for effects
  • Device Information: Get detailed device status, capabilities, and configuration
  • Advanced Control: Use raw JSON API for complex operations and custom states

⚠️ IMPORTANT DISCLAIMER

USE AT YOUR OWN RISK: This MCP server directly controls your WLED device and can modify its configuration, effects, colors, and settings. The author is NOT LIABLE for any damage, malfunction, or unintended behavior that may occur to your WLED device, LED strips, or related hardware when using this software.

STRONGLY RECOMMENDED BEFORE USE:

  • Backup your WLED configuration: Export your current WLED config via the web interface (Config → Security & Updates → Backup Configuration)
  • Save your presets: Document or export any custom presets you want to keep
  • Test on non-critical devices first: Try this software on a test setup before using on important lighting installations
  • Understand the risks: This software can change brightness, colors, effects, and potentially overwrite your saved presets

By using this software, you acknowledge that you understand these risks and agree that you are solely responsible for any consequences.

Installation

  1. Clone this repository:
git clone https://github.com/mrkprdo/wled_mcp.git
cd wled_mcp
  1. Install dependencies:
pip install -e .

Quick Start

1. Configure Your WLED Device

Set your WLED device IP address:

export WLED_HOST=192.168.1.100

2. Test the Connection

Run the test script to verify connectivity:

python examples/test_server.py

3. Use with Claude Desktop

Add this configuration to your Claude Desktop MCP settings:

{
  "mcpServers": {
    "wled": {
      "command": "python",
      "args": ["-m", "wled_mcp.server"],
      "env": {
        "WLED_HOST": "192.168.1.100"
      }
    }
  }
}

4. Start Controlling Your WLED

You can now ask Claude to control your WLED device with natural language:

  • "Turn on my WLED and set it to bright blue"
  • "Set a rainbow effect with medium speed"
  • "Dim the lights to 25% brightness"
  • "Show me the current device status"
  • "Activate my bedtime preset"
  • "Set the lights to a warm white color"
  • "List all available effects"

Available Tools

Basic Controls

  • wled_set_power(on: bool, host?: str) - Turn device on/off
  • wled_set_brightness(brightness: int, host?: str) - Set brightness (0-255)
  • wled_set_color(r: int, g: int, b: int, host?: str) - Set RGB color (0-255 each)

Effects & Animation

  • wled_set_effect(effect_id: int, speed?: int, intensity?: int, host?: str) - Set lighting effect with optional speed/intensity (0-255)
  • wled_get_effects(host?: str) - List all available effects with IDs and names
  • wled_get_palettes(host?: str) - List available color palettes

Presets

  • wled_get_presets(host?: str) - List all saved presets with IDs and names
  • wled_activate_preset(preset_id: int, host?: str) - Activate a preset by ID (1-250)

Device Information

  • wled_get_info(host?: str) - Get device information (name, version, LED count, capabilities)
  • wled_get_state(host?: str) - Get current device state (power, brightness, color, effect)

Advanced

  • wled_set_state(state_json: str, host?: str) - Set device state using raw JSON for complex operations

Note: All tools support an optional host parameter. If not provided, the WLED_HOST environment variable will be used.

Example Usage

Via Claude Desktop

Once configured, you can use natural language commands:

"Turn on my WLED lights and set them to a soft purple color"
"Set a rainbow effect with slow speed"
"Show me all available presets"
"Activate preset 5"
"Set brightness to 50%"

Direct API Usage

# Turn on and set to purple
await wled_set_power(True)
await wled_set_color(128, 0, 128)

# Set rainbow effect with custom speed
await wled_set_effect(9, speed=150, intensity=200)

# Get device info
info = await wled_get_info()

# Activate a preset
await wled_activate_preset(3)

Troubleshooting

Common Issues

  • Connection Errors:

    • Ensure your WLED device is powered on and connected to the same network
    • Verify the IP address is correct (check your router or WLED web interface)
    • Test connectivity with ping <WLED_IP>
  • Environment Variable Issues:

    • Make sure WLED_HOST is set correctly: export WLED_HOST=192.168.1.100
    • On Windows: set WLED_HOST=192.168.1.100
  • Tool/Command Errors:

    • Use wled_get_effects() to see available effect IDs (usually 0-100+)
    • Use wled_get_presets() to see available preset IDs (1-250)
    • Check device capabilities with wled_get_info()
  • Claude Desktop Integration:

    • Restart Claude Desktop after updating MCP configuration
    • Check that Python is in your system PATH
    • Verify the MCP server starts without errors

Testing Your Setup

Run the test script to verify everything works:

python examples/test_server.py

This will test basic connectivity and functionality with your WLED device.

Development

Project Structure

wled_mcp/
├── wled_mcp/
│   ├── __init__.py
│   ├── server.py          # MCP server implementation
│   └── wled_client.py     # WLED HTTP client
├── examples/
│   └── test_server.py     # Test script
├── pyproject.toml         # Project configuration
└── README.md

Contributing

The server uses WLED's JSON API for reliable communication and supports all standard WLED features. Contributions welcome!

License

This project is licensed under the MIT License - see the LICENSE file for details.

MIT License Summary

  • ✅ Commercial use allowed
  • ✅ Modification allowed
  • ✅ Distribution allowed
  • ✅ Private use allowed
  • ❌ No liability or warranty provided

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

iflow_mcp_mrkprdo_wled_mcp-0.1.0.tar.gz (7.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

iflow_mcp_mrkprdo_wled_mcp-0.1.0-py3-none-any.whl (7.8 kB view details)

Uploaded Python 3

File details

Details for the file iflow_mcp_mrkprdo_wled_mcp-0.1.0.tar.gz.

File metadata

  • Download URL: iflow_mcp_mrkprdo_wled_mcp-0.1.0.tar.gz
  • Upload date:
  • Size: 7.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for iflow_mcp_mrkprdo_wled_mcp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 687cd0a308194afdd61916480d415f646d4b60463c43b301aaa433036424ddb9
MD5 96b94b9b580d0dd7d17055a11cc57945
BLAKE2b-256 a1e931edc9dbb74f62f4efaf9725df4ab43ce1bb91a3954eb124eb09c7c69250

See more details on using hashes here.

File details

Details for the file iflow_mcp_mrkprdo_wled_mcp-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: iflow_mcp_mrkprdo_wled_mcp-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 7.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.2 {"installer":{"name":"uv","version":"0.10.2","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for iflow_mcp_mrkprdo_wled_mcp-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 12e7bae1986fe26eb4d46d5de4ab2762152d778dd96d89694ee5c9c97c5533af
MD5 af609b3159ea0e599d30fa97862c2fac
BLAKE2b-256 ec9d483cc1cb69e9fcb3a9e64382392eb4a13c566add99d5356b0af14a08f3ad

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page