MCP server for controlling digital mixers (Behringer X32, Midas M32, etc.) via OSC
OSC MCP server defines 14 tools with complete input schemas and consistent naming (verb_noun pattern: osc_set_*, osc_get_*). All tools have descriptions (avg 65 chars) and parameters include type, min/max constraints. However, descriptions are terse and lack context for LLM selection (e.g., 'Set the fader level' doesn't explain when to use vs alternatives). No output schemas documented. No error handling guidance. Missing parameter descriptions for some fields (e.g., 'name' in osc_set_channel_name lacks max-length enforcement in description). No tool annotations (readOnlyHint/destructiveHint). Composition is sound, each tool has single responsibility, but no batch operations for common multi-channel workflows.
Get the name of a channel
Get EQ gain for a channel band
Get the current fader level for a channel
Get the mute status of a channel
Get the pan position for a channel
Mute or unmute a channel
Set the name of a channel
Descriptions lack LLM-selection context. 'Set the fader level for a channel' (65 chars) does not explain when to use this tool vs alternatives, prerequisites, or return value. Baseline for A-grade tools is 50-200 chars with WHAT/WHEN/WHY.
No output schemas documented. LLMs cannot plan downstream calls or extract return values. All 14 tools lack documented return types (baseline: 100% of A+ tools have them).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2026-07-28+ | v2 |
Set EQ gain for a channel band
Set EQ frequency for a channel band
Enable or disable EQ for a channel
Set EQ Q factor for a channel band
Set the fader level for a channel (0.0 to 1.0)
Set gate threshold for a channel
Set the pan position for a channel (-1.0 = left, 0.0 = center, 1.0 = right)
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). LLMs cannot distinguish safe reads from destructive writes. All write tools (osc_set_*) should be marked destructiveHint=true.
Parameter 'name' in osc_set_channel_name lacks max-length constraint in description. Schema shows no maxLength property. Description says '(max 6 characters)' but this is not enforced in JSON Schema, forcing LLM to guess.
No error handling guidance. Tools lack recovery hints (e.g., 'If connection fails, check OSC_HOST and OSC_PORT environment variables'). No categorization of errors as retryable vs fatal.