Prototype · Preview: every server in the official registry, synced every 30 minutes. Reviews and accounts come in a later step.
PopNx MCPMCP servers for people who use AI · explained in plain words

WLED MCP (unofficial)

by desciparversion 0.2.0i★ –iRuns on your computer
Registry nameio.github.descipar/wled-mcp

Install

Overview

Description from the maker (original English)

Unofficial MCP server for WLED LED controllers; not affiliated with the WLED project

PopNx MCP’s three pillars

These three are never merged into one score: opinions, measurements and popularity are different things.

What you can do with it

We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.

  • Connection: Runs on your computer
  • Transport: stdio
  • Category: Other

Install

Pick the AI app you use, then copy the settings.

Before you install

  • Basic checks: 1 of 1 passed
  • Runs on your computer with your user’s permissions (files, network, apps).
  • The registry lists no key to fill in.

You need

  • PyPIPython’s uv installed (for the uvx command)

Which app do you use?

Pick your app above. We remember it, so next time the button says “Install in …”.

Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json

{
  "mcpServers": {
    "wled": {
      "command": "uvx",
      "args": [
        "wled-mcp",
        "--transport",
        "stdio",
        "--config",
        "{config_path}",
        "--data-dir",
        "{data_dir}"
      ]
    }
  }
}

Run this in your terminal

claude mcp add wled -- uvx wled-mcp --transport stdio --config '{config_path}' --data-dir '{data_dir}'

Open in Cursor

Or copy the settings yourself

Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json

{
  "mcpServers": {
    "wled": {
      "command": "uvx",
      "args": [
        "wled-mcp",
        "--transport",
        "stdio",
        "--config",
        "{config_path}",
        "--data-dir",
        "{data_dir}"
      ]
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

Open in VS Code

Or copy the settings yourself

Paste into .vscode/mcp.json in your project

{
  "servers": {
    "wled": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "wled-mcp",
        "--transport",
        "stdio",
        "--config",
        "{config_path}",
        "--data-dir",
        "{data_dir}"
      ]
    }
  }
}

Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.

This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.

Your choice stays on this device in a cookie; no account needed.

These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.

What it can do

Runs on your computer; the tool list appears in your AI app after you install it.

Basic checksi

We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 10, 2026

  • ✓ Pass

    Maker matches the repo

    The registry name was verified with the GitHub account descipar, which owns the repo

  • … Not checked yet

    Still maintained

    We have not read this repo from GitHub yet

  • … Not checked yet

    Has a licence

    We have not read this repo from GitHub yet

  • – Not applicable

    Endpoint responds

    This one runs on your computer; there is no internet endpoint

  • – Not applicable

    Sign-in with OAuth

    Runs on your computer and uses local settings instead

  • … Not checked yet

    No hidden instructions in tool descriptions

    Runs on your computer; we can only read tool lists from internet endpoints

Compared with others in Otheri

  • More stars than 0% of the other 18976 servers in this category
  • Published to the registry more recently than 100% of the other 18976 servers in this category
  • Basic checks equal to or better than 100% of the other 18976 servers in this category

Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.

Common questions

Is WLED MCP (unofficial) safe?

It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.

What keys or codes does it need?

The registry does not list a required key, though some servers ask you to sign in on first use.

Does it run on my computer or in the cloud?

It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).

Is it still maintained?

The GitHub repo last changed –, and the latest version (0.2.0) reached the registry today.

Which apps can use it?

Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Python (uv) on your computer.

What can I use instead?

In the same category: Spec Driven Development, Remote Desktop Commander, Aleksei Shipulin — CV, projects and writing

Alternatives

Servers in the same category from other makers, sorted by stars.

Reading a card:↓ Downloads per weeki★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi

Spec Driven Development

MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.

by formulahendryEarly↓ 66/wk★ 440Updated 14 months ago

Runs on your computer

Remote Desktop Commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

by desktop-commanderGrowing★ 211Updated today

Runs in the cloud✓ desktopcommander.app

README from the maker

Open the README

Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.

WLED MCP

An unofficial MCP server that lets an AI agent read and control WLED LED controllers by name: power, brightness, segments, effects, palettes, presets, groups, scenes and zones. It talks to each controller's JSON API on your network, validates every change before sending it and reads it back afterwards. It runs as a subprocess of your MCP host (stdio) or as a separate HTTP service. It is not affiliated with, endorsed by or supported by the WLED project or MCPHub.

Status: early software with 0.x versions that may break between releases (CHANGELOG.md). Releases are distributed on PyPI as wled-mcp (the first two releases are Git tags only); a release that is not listed there installs from its Git tag instead. The server is listed in the official MCP Registry as io.github.descipar/wled-mcp (unofficial, not affiliated with the WLED project); whether a particular MCP host or hub shows that entry was not checked. The container image is not published to GHCR. Hardware acceptance is partial: one controller on WLED 16.0.1. No support is promised (Support).

What it does

  • Self-hosted: no cloud service, account, MQTT broker or public endpoint is needed.
  • Named inventory of controllers in a TOML file. The server and its tools discover nothing; wled-mcp discover is an opt-in command.
  • Normalized state, capabilities and each device's own effect and palette catalogs.
  • Typed changes: master power and brightness, a patch of selected segments, or a replacement of the complete layout. Advanced segment fields (CCT, 2D) are written only where the device reports them. Segment tools accept the device's own effect and palette names (effect_name, palette_name) in place of IDs; a name is resolved against that device's catalog before any write and an ambiguous or unknown name is refused with candidates (contract).
  • Effect discovery: wled_get_effects parses the firmware's effect metadata and filters by name, 2D and audio reactivity (contract). wled_search_effects finds a device's effects by curated properties such as motion, flashing, colour slots and palette use; the catalog is small and an effect it does not list is not searchable (contract).
  • Named zones: a reviewed zone file maps a physical region to configured devices and LED ranges; wled_plan_zone previews the exact segments without a write and wled_apply_zone changes segment fields only inside the zone, otherwise it refuses before any write (contract).
  • Agent guidance: the server serves safe-lighting instructions at initialization, a prompt change_lighting_safely and precise field descriptions, identically over stdio and HTTP. A client has to pass them on to its agent; forwarding by MCPHub was not observed (contract).
  • Persistent presets with snapshots, restore, portable bundles and playlists; named device groups and multi-device scenes with a dry-run plan.
  • Server-enforced profiles (read-only, control, full) and, for the HTTP service, a bearer credential with Host and Origin allowlists.

All 31 tools, each with its read-only, write or destructive hint, are listed in the tool contract.

WLED feature coverage: 59 % of the planned scope, 47 % of WLED overall (method and list).

Try it

You need uv, an MCP host that can start a stdio server and a WLED controller reachable over HTTP; the optional HTTP service also needs Docker with Docker Compose. Replace with the version of the latest release (its tag is v ). The commands install that release from PyPI. If the version is not listed there yet, use the Git route instead: replace wled-mcp== with git+https://github.com/descipar/wled-mcp@v , which builds the package from the tag on your machine; without a tag, uvx takes the current main, which can change at any time. The commands are for a POSIX shell; Windows is experimental (docs/DEVELOPMENT.md).

  1. Check the installation (no device, no configuration):
   uvx --isolated --python 3.13 --from wled-mcp==<version> wled-mcp --version
  1. Create a data directory and an inventory with one controller (contacts nothing):
   mkdir -p "$HOME/wled-mcp"

uvx --isolated --python 3.13 --from wled-mcp== wled-mcp config init --config "$HOME/wled-mcp/devices.toml" --device-id desk --device-name "Desk strip" --base-url http://

  1. Register the server in your MCP host with the command uvx and these arguments, each one separate, using absolute paths:
   --isolated --python 3.13 --from wled-mcp==<version> wled-mcp --transport stdio --config <absolute path>/wled-mcp/devices.toml --data-dir <absolute path>/wled-mcp

Ask the agent to list your WLED devices (wled_list_devices). Every write tool accepts dry_run=true to preview a change without touching the lights.

Both routes need network access (the Git route to GitHub as well as PyPI). The dependencies are resolved within the ranges the package declares when uvx first creates the tool environment, so they can be newer than the set the release was tested with; for that tested set add the release constraints (dependency policy). For a checksum-verified wheel, more devices, the inventory format and the HTTP service, follow the quickstarts; updates, rollback and removal are in docs/DEPLOYMENT.md.

Safety model

  • Validate first. A complete request is checked against the current device state before the first write; unknown fields and out-of-range values are rejected. Omitted fields mean "unchanged", never "reset".
  • Patch versus replace. wled_patch_segments changes only the named segments; only wled_replace_layout removes segments that are not listed.
  • Dry run and verification. dry_run=true returns the plan without writing. Writes are read back; a write that timed out is reported as possibly applied and is never retried blindly.
  • Snapshots. Overwriting or deleting a preset first stores a durable snapshot in the data directory. Restores, imports, supplied-state stores (wled_store_preset) and playlist saves change the live output before they store, and the previous lighting is not restored.
  • No hidden reach. No discovery by the server or its tools, no arbitrary endpoints or caller-supplied hosts, no silent preset overwrite (overwrite=true is required).
  • Authorization. Whether a person may run a tool is the MCP host's job; tool annotations are hints only. The HTTP service also requires its own bearer credential and Host allowlist and must not be exposed to the internet.

Compatibility

What the checks cover; the evidence for each row and the firmware tiers are in docs/contract/compatibility.md. This is not a support commitment (see Support).

AreaStatus
Python 3.13supported
Linux amd64supported
Linux arm64supported
HTTP container image, amd64 and arm64supported
stdio via uvx on Linuxsupported
Windowsexperimental
macOSexperimental
WLED 16.0.1tested
WLED 16.x other than 16.0.1unknown
WLED below 16.0.0, including 0.15.xunsupported

Unsupported or unrecognized firmware is served with a warning and never refused; wled_get_state reports the tier in diagnostics.firmware_support.

Limitations

Automated tests use mocks and synthetic loopback devices. Hardware acceptance covers the first feature set on one RGB controller, and a live check with an offline controller is still pending. A short live check of release 0.1.1 over HTTP and stdio covered state reads, power, brightness and effect changes on that controller (record). A later run on the same controller exercised a one-device group and scene, preset store, export, import and restore, and a playlist, with the controller restored afterwards (record). Multi-device scenes, profiles, discover, restore onto an occupied slot, playlist import, restoring a playlist preset and CCT, RGBW and 2D controllers have no hardware run. Of the newest features, only a read-only run covered the effect metadata and one effect search; zones, name resolution in segment writes and the served guidance have mocked or local-client tests only. Other limits:

  • No tool deletes a snapshot on request; snapshots are only removed by retention pruning (20 per controller by default).
  • Storing, restoring or importing a preset without changing the live output is not possible on WLED 16, and saving a playlist starts it.
  • One writer per controller: locks are per process, so a second process or service against the same devices is not coordinated.
  • No inventory reload; changes need wled-mcp config validate and a restart.
  • No device authentication: WLED has none for its light API ("Anyone with your IP and port can control the lights", WLED docs). The server sends no device credentials and rejects credentials in a device URL, so a controller behind HTTP authentication or a credentialed proxy is not supported. Behavior with a settings PIN or OTA lock is untested; a test is planned (#128).
  • No image on GHCR. A live update of a deployed HTTP service was checked once, from an earlier build to release 0.1.1; a rollback has not been checked.

The complete list and the evidence are in docs/VALIDATION.md.

Documentation

DocumentContents
QuickstartsRelease directory, stdio and HTTP setup, inventory format
DeploymentBoth transports in detail: staging, verification, update, rollback, removal
Tool contractTools, parameters, results, errors and mutation semantics
WLED feature coverageWLED features with support status, owning issue or decision, and coverage figures

| [Inventory and cl

Only the beginning is shown; read the rest in the repo

Ask PopNx