Space Dust MCP
Lets users shape Space Dust synthesizer presets by describing the sound they want in natural language, instead of turning knobs. It reads, creates, adjusts, and compares preset files, with safety rails and live updates.
README
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_MCP
Then add it to Claude Code:
claude mcp add space-dust -- spacedust-mcp
For 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.
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 ~/Library/Application Support/Space Dust/current.sdpreset and watches
the loaded preset for external edits. Against older builds every other tool still works;
the user just re-selects the preset to hear a change.
Tools
| Tool | Purpose |
|---|---|
read_current_sound |
What the plugin is playing right now, no preset name needed |
adjust_current_sound |
Change that sound; the plugin applies it within a second |
list_presets |
Presets in the user's preset folder |
read_preset |
A preset's settings, grouped by section, defaults omitted |
list_parameters |
Search parameters, their ranges and defaults |
create_preset |
New preset from Init or from an existing one |
adjust_preset |
Change an existing preset in place, saving an undo point |
undo_preset |
Restore the version before the last change |
preset_history |
List saved earlier versions |
compare_presets |
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.cpp
The 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 pytest
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.