Space Dust MCP
The Space Dust MCP server lets you explore, create, modify, and manage Space Dust synthesizer presets entirely through natural language — translating musician descriptions like "darker," "punchier," or "more bite" into precise parameter changes without touching the plugin's knobs or XML files.
List Presets: Browse all presets in your Space Dust preset folder.
Read a Preset: Inspect a preset's settings grouped by section, showing only what differs from defaults (or all parameters if requested).
Read Current Sound: See what the plugin is playing right now, so you can say "this sound" or "what I'm hearing" without naming a preset.
Adjust Current Sound: Change the live sound with immediate effect — the plugin picks up changes within a second.
Create a Preset: Generate a new preset from scratch (Init) or based on an existing one; refuses to overwrite existing presets.
Adjust a Preset: Modify a saved preset in place, with an automatic undo snapshot taken before every change and an optional note describing what was requested.
Undo: Restore a preset to its state before the last change.
Preset History: View up to 30 previously saved versions of a preset.
Compare Presets: See every parameter that differs between two presets side by side.
List Parameters: Search and browse all synth parameters, their ranges, and defaults by section or name.
Control a Space Dust synth plugin by shaping presets through natural language — listing presets, reading and adjusting the current sound, creating and modifying presets, undoing changes, and comparing presets, with all edits written to the plugin's preset folder.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Space Dust MCP make the current sound warmer and punchier"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Space Dust connector
Lets someone shape Space Dust presets by describing the sound they want, instead of by turning knobs or editing files. They say "make the bass darker and give it more bite"; Claude reads the preset, changes the right parameters, and tells them what it did.
Space Dust is a subtractive synthesiser plugin (VST3 / AU / standalone, built with JUCE). This is a companion, not part of the plugin — install the synth first.
Works with the Space Dust you already have installed. Presets are plain XML files, so nothing here needs the plugin's source code or a rebuild.
Install
Requires Space Dust and uv.
git clone https://github.com/jwang47/Space_Dust_Synthesizer_MCP.git
uv tool install ./Space_Dust_Synthesizer_MCPThen add it to Claude Code:
claude mcp add space-dust -- spacedust-mcpFor the Claude desktop app, add it under Settings → Developer → Edit Config:
{
"mcpServers": {
"space-dust": { "command": "spacedust-mcp" }
}
}Restart Claude afterwards. Nothing leaves the machine — the server only reads and writes files in the user's own preset folder.
Related MCP server: MCP Synth Controller
What the user can do
"What have I got in Space Dust?" — lists their presets
"What's going on in Dub Mew Bass?" — reads a preset back in plain language
"Make me a bass like that one but darker and punchier" — creates a new preset
"Too muddy, back off the low end" — adjusts what they're currently playing
"Actually, undo that" — restores the previous version
"What's different between these two?" — compares presets
Changes to the preset the plugin currently has loaded are picked up on their own within a second, so the user can keep playing while iterating. A newly created preset still has to be selected once from the preset menu.
Live adjustment needs a plugin build that includes PresetHotReload — it publishes the
current sound to current.sdpreset in the plugin's app-data folder and watches the loaded
preset for external edits. That folder is ~/Library/Application Support/Space Dust on
macOS and %APPDATA%\Space Dust on Windows, matching PresetManager::appDataFolder().
Against older builds every other tool still works; the user just re-selects the preset to
hear a change.
Tools
Tool | Purpose |
| What the plugin is playing right now, no preset name needed |
| Change that sound; the plugin applies it within a second |
| Presets in the user's preset folder |
| A preset's settings, grouped by section, defaults omitted |
| Search parameters, their ranges and defaults |
| New preset from Init or from an existing one |
| Change an existing preset in place, saving an undo point |
| Restore the version before the last change |
| List saved earlier versions |
| Every setting that differs between two presets |
The server's instructions teach Claude the synth's signal flow and how to translate musician language ("wobblier", "more space", "punchier") into parameter moves, so the user never has to learn a parameter name.
Safety rails
These exist because the model, not the user, is choosing the values:
Unknown parameter ids are rejected with close matches, never silently ignored.
Out-of-range numbers are clamped to the plugin's real range and reported.
Switch and menu parameters only accept their actual values (
on/off,Low Pass).Preset names can't contain path separators, so writes stay in the preset folder.
create_presetrefuses to overwrite an existing preset.Every
adjust_presetsnapshots the previous version first — up to 30 per preset, in~/Library/Application Support/Space Dust/history/.Presets are always written with all 206 parameters.
APVTS::replaceStateleaves omitted parameters at their current value, so a partial preset would inherit whatever the plugin happened to have loaded.
Keeping the schema current
Parameter ranges, defaults and choice names live in data/schema.json, generated by
parsing createParameterLayout() in the
plugin source.
Regenerate it whenever the plugin's parameter list changes:
uv run python -m spacedust_mcp.source_parser /path/to/Source/PluginProcessor.cppThe default path assumes the two repos sit side by side; SPACE_DUST_SOURCE overrides it.
End users never run this — they get the generated file in the package. Longer term the plugin should export this itself at build time, so the two can't drift.
Tests
uv run pytestAvailable Tools
10 toolsadjust_current_soundA
Change the sound the user is playing right now, and hear it within a second.
Use this for "make this darker", "less muddy", "more bite" — anything about the sound in front of them rather than a preset by name. Writes to the preset Space Dust currently has loaded; the plugin picks the change up on its own, so the user doesn't have to touch the preset menu.
Needs a preset to be selected in the plugin. If they're on an unsaved sound, ask them to save it as a preset first.
Inputs: changes (required), note. Returns: result
adjust_presetA
Change settings in an existing preset, in place.
changes maps parameter ids to values written the way the plugin shows them —
{"filterCutoff": "180", "softClipperDrive": "0.6"}.
The previous version is saved first, so undo_preset can always take it back. Use
note to record what the user asked for ("darker, more low end").
Inputs: preset (required), changes (required), note. Returns: result
compare_presetsA
Show every setting that differs between two presets.
Inputs: first (required), second (required). Returns: result
create_presetA
Create a new preset and save it to the user's preset folder.
changes maps parameter ids to values written the way the plugin shows them —
{"filterCutoff": "260", "osc1Waveform": "Saw", "subOscOn": "on"}.
based_on is the preset to start from; "Init" starts from the synth's default state.
Starting from an existing preset the user likes is usually the better move.
Refuses to overwrite an existing preset — pick another name, or use adjust_preset.
Inputs: name (required), changes (required), note, based_on. Returns: result
list_parametersA
Look up Space Dust parameters, their ranges and defaults.
Pass a word to filter — a section name like "filter" or "reverb", or part of a parameter name. With no query this returns every parameter, grouped by section.
Inputs: query. Returns: result
list_presetsA
List the presets installed in the user's Space Dust preset folder.
Inputs: no named parameters. Returns: result
preset_historyB
List the saved earlier versions of a preset, newest last.
Inputs: preset (required). Returns: result
read_current_soundA
Show what Space Dust is playing right now, without the user naming a preset.
Use this whenever they say "this sound", "what I'm hearing", "the current patch".
Inputs: no named parameters. Returns: result
read_presetA
Show how a preset is set up, grouped by section.
Only settings that differ from the synth's defaults are listed, which is what makes
the sound what it is. Set include_defaults to see every parameter.
Inputs: preset (required), include_defaults. Returns: result
undo_presetB
Take a preset back to how it was before the last change.
Inputs: preset (required). Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 10 tools
Each tool has a clearly distinct purpose: listing vs reading presets, adjusting named presets vs the current sound, and separate tools for undo, history, and comparison. The descriptions explicitly disambiguate potentially similar pairs like adjust_preset and adjust_current_sound.
All tool names follow a consistent verb_noun snake_case pattern (e.g., list_presets, read_preset, adjust_current_sound). Verbs are semantically appropriate (list, read, create, adjust, undo, compare), and no mixed naming conventions are present.
At 10 tools, the set is well-scoped for a synth preset management server. Each tool covers a distinct capability without redundancy, and the count feels neither sparse nor bloated.
The core lifecycle of preset management is covered: list, read, create, adjust, undo, history, and compare. However, a delete operation is missing, and saving the current sound as a new preset would require a workaround, leaving minor gaps.
Maintenance
Related MCP Connectors
Compose, mix, master and export in Logic Pro, REAPER or Ableton Live by talking to an AI engineer.
Query, explore, and manage your databases through natural conversation.
A prompt engineer you talk to. It writes prompts, sharpens yours, and keeps them on your shelf.
Agent-Native design tool - create and edit visual designs with agent assistance
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI assistants to generate and control real-time audio synthesis through natural language descriptions using SuperCollider. Features 10 built-in synth types, pattern sequencing, audio recording, and server lifecycle management for creating sounds from simple English descriptions.112MIT
- FlicenseNot gradedqualityDmaintenanceEnables LLMs to control synthesizer parameters in real-time by translating natural language commands into OSC messages sent to a JUCE synthesizer application.-
- AlicenseAqualityDmaintenanceEnables AI-powered music composition and synthesis by generating Pure Data patches, VCV Rack modules, and MIDI controller mappings through natural language.1012 npm5MIT
- AlicenseNot gradedqualityCmaintenanceEnables natural language control of OSC (OpenSoundControl) messages, allowing users to generate, interpret, validate, and debug OSC messages through an LLM interface for parametric control of multimedia devices.3MIT