MCP server for generating xLights sequences from music analysis
Server has 10 tools with basic descriptions and input schemas, but significant gaps in parameter documentation and output schema clarity. Tool names follow verb_noun convention (list_, add_, switch_, inspect_, analyze_, get_). However, most parameter descriptions are minimal or missing entirely. Output schemas are not documented, responses are inferred from code inspection. Error handling provides some guidance (e.g., 'action_required' fields) but lacks structured error classification. No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Descriptions range 50 - 200 chars, meeting baseline length, but lack specificity on when to use each tool vs. alternatives.
Add an xLights show folder by path. Use this to confirm a detected show folder or provide a custom path. The folder must contain an xlights_rgbeffects.xml file.
Analyze a music file for light show sequencing. Performs full audio analysis: beat detection, song structure, frequency spectrum, energy profile, and optionally source separation.
Get the verse/chorus/bridge structure of a song.
Inspect an existing xLights sequence file. Shows the song info, duration, models used, and effect summary.
List all controllers configured in the active xLights show. Returns controller names, IPs, protocols, and channel counts.
List all available xLights effects with descriptions. Returns effect names, descriptions, and which model types they work best on.
Output schemas not documented. Tools return dicts with inferred structure (e.g., analyze_song returns audio analysis data, but no schema is visible in code or docstrings). LLMs cannot plan downstream calls without knowing what fields to expect.
Parameter descriptions are minimal or absent. 'mp3_path' in analyze_song and get_song_structure lacks format guidance (must be .mp3? absolute path? relative?). 'show_name' in switch_show has no enum or example. LLMs cannot validate inputs without explicit constraints.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). add_show_folder and switch_show modify state but lack destructiveHint. list_* tools lack readOnlyHint. Agents cannot distinguish safe from risky operations.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2026-07-28+ | v2 |
List all light models in the active xLights show. Returns model names, types, controller assignments, and channel info.
List all sequences (.xsq files) in the active show folder.
List all configured xLights show folders. Returns the available show folders (e.g., Christmas, Halloween) and indicates which one is currently active.
Switch the active xLights show folder.
Error handling lacks structured classification. Responses include 'action_required' strings but no error codes or retry guidance. 'No active show folder configured' does not tell the LLM if this is retryable or user-fixable.
No pagination support. list_models, list_controllers, list_sequences, list_effects return all results without limit or offset. Large result sets will blow context windows and degrade LLM reasoning.