DeepMind 12 MCP server (DeepMind-first) for controlling Deepmind 12 synthesizer via MIDI NRPN and SysEx
Solid domain-specific tool design with clear naming and comprehensive schemas. All 8 tools have descriptions (avg 180 chars) and well-typed input schemas. Naming follows verb_noun pattern (describe_*, set_*, send_*, snapshot_*, patch_*). However, output schemas are not documented, LLMs cannot predict response structure for planning. Error handling is absent; no guidance on retryability, user-fixable vs fatal errors, or recovery paths. Parameter descriptions are good but lack format/constraint details (e.g., 'param' accepts aliases but no examples of valid aliases). Missing tool annotations (readOnlyHint, destructiveHint) despite clear read/write semantics.
Describe the parameters of a DeepMind FX effect type by name or internal type number. With no argument, lists all 35 available effect types and their internal values. With a type, returns the full param schema: settable names (fxN.<effect>.<key>), display units, min/max, enum labels, and mod-destination flags. Use this to plan FX configuration without loading the effect first.
List known DeepMind 12 NRPN parameters with names, ranges, and notes (for LLM reasoning; use send_nrpn to set values). See resource deepmind12://references/deepmind_nrpn for the full table.
Describe a DeepMind parameter by name: NRPN address (when known), raw/normalized ranges, and enum labels (when available). For FX params, see resource deepmind12://references/deepmind_fx.
Read the current edit buffer via sysex, apply one or more byte-level patches, and write the full buffer back. Bypasses NRPN — use this when set_param fails for certain parameters (e.g., FX params). Each patch is an offset + raw value (0–255).
Send raw NRPN message to DeepMind 12. Use this to programmatically change parameters by NRPN number during discovery.
No output schemas documented. LLMs cannot predict response structure (fields, types, nesting) for planning downstream tool calls or extracting data. E.g., describe_nrpn returns a list but structure is opaque.
No error handling guidance. Tools lack recovery hints (e.g., 'If NRPN fails, try patch_edit_buffer'). No categorization of errors as retryable vs user-fixable. Agents cannot self-correct on failure.
Missing tool annotations. set_param, set_params, send_nrpn, patch_edit_buffer are destructive (WRITE risk) but lack destructiveHint. describe_* tools are read-only but lack readOnlyHint. Agents cannot distinguish safe from risky calls.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
Set a DeepMind parameter by structured name. Provide exactly one of: value (normalized 0..1), rawValue (raw integer), or label (enum string like "Loop").
Set multiple DeepMind parameters efficiently in one call (batched NRPN). Each entry accepts value, rawValue, or label — same as set_param.
Read current synth state via edit-buffer SysEx dump, returning a rich decoded parameter object (plus raw edit-buffer bytes). Use includeSysex=true only when you need the large base64 SysEx payload for debugging.
Parameter 'param' in describe_param and set_param accepts aliases but no examples or enum of valid aliases provided. LLMs must guess valid formats (filter.cutoff vs vcf.cutoff vs modMatrix.1.source).
set_param and set_params require exactly one of value/rawValue/label but no validation documented. LLMs may pass multiple or none, causing silent failures. Add oneOf constraint or explicit validation error guidance.