Model Context Protocol server for controlling QLab show control software via OSC protocol. Provides workspace state queries, cue listing/searching, playback control, and cue management.
QLab MCP server has 13 tools with basic descriptions and minimal parameter documentation. Tool names follow verb_noun convention (workspace_info, list_cues, get_cue_info, start_cue, stop_cue, pause_cue, resume_cue, go, panic, reset_cue, search_cues, get_running_cues, get_playback_position). However, descriptions are generic (10-50 chars for most), parameters lack type constraints and detailed descriptions, and output schemas are not documented. No error handling guidance, no input validation hints, and no parameter constraints (enums, ranges, formats). Tools return JSON strings rather than structured objects. No tool annotations (readOnlyHint/destructiveHint) despite clear risk levels. Parameter descriptions are minimal: 'Optional cue list number. Empty for all cue lists.' lacks format guidance. No pagination support despite list_cues potentially returning large datasets. Error messages are in Chinese and generic ('無法連接 QLab').
Get detailed information about a specific cue.
Get the current playback position (which cue is next).
Get all currently running or paused cues.
Trigger GO — execute the cue at the current playback position.
List all cues in the current workspace or a specific cue list.
PANIC — hard stop all cues and reset. Use in emergencies.
No output schemas documented. Tools return JSON strings (via json.dumps) rather than structured objects with typed fields. LLMs cannot plan downstream calls or extract specific fields without parsing unstructured text.
Parameter descriptions are minimal and lack format/constraint guidance. 'cue_number' parameter has no format hint (e.g., '1-1', 'MA2-CUE1' are examples but not constraints). 'cue_list_number' lacks type info and valid range. No enums, regex patterns, or length limits specified.
No tool annotations (readOnlyHint/destructiveHint/idempotentHint) despite clear risk levels. Tools marked READ_ONLY (workspace_info, list_cues, etc.) and WRITE/DESTRUCTIVE (go, panic, reset_cue) lack protocol-level hints to guide agent behavior.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 42 | 2026-07-28+ | v2 |
Pause a specific cue, or pause all cues if no number given.
Reset a specific cue, or reset all cues if no number given.
Resume a specific cue, or resume all cues if no number given.
Search for cues by name or number.
Start (play) a specific cue.
Stop a specific cue, or stop all cues if no number given.
Get current QLab workspace information: name, running cues, and status.
Error handling lacks recovery guidance. Errors are generic Chinese strings ('無法連接 QLab', '找不到 Cue') with no actionable next steps. No distinction between retryable (timeout), user-fixable (invalid cue number), or fatal (QLab not running) errors.
No pagination support. list_cues and search_cues return all results without limit, offset, or cursor. Large workspaces could return thousands of cues, exhausting context window and degrading LLM reasoning.