Complete reference for connecting AI assistants to SnappySnap
What is MCP?
MCP (Model Context Protocol) lets AI assistants like Claude control SnappySnap directly.
Think of it like giving Claude a remote control for your plugin.
With MCP enabled, you can say things like:
"Make the sound warmer"
"Save this as a snapshot"
"Blend between my clean and dirty sounds"
"Randomize everything except the volume"
The AI understands what you want and adjusts the plugin for you.
Why Use MCP?
Without MCP
With MCP
You adjust every knob manually
AI adjusts knobs based on your description
You need to know parameter names
Just describe what you want
Trial and error to find sounds
AI suggests and applies changes
Complex morph setup
"Blend between these two sounds"
Best for: Sound design exploration, quick preset tweaking, learning what parameters do, hands-free adjustments while playing.
Getting Started
Step 1: Enable MCP Server
Open SnappySnap (standalone or in your DAW)
Toggle Enable MCP Server ON
Click the gear icon (settings)
Find MCP Server section
You'll see a port number appear (like 52001)
Step 2: Connect Your AI Assistant
Use the Config Writer below to generate the right configuration for your AI client. Pick your client, choose a connection mode, and copy the result into your config file.
Direct (stdio)
Your AI client launches SnappySnap's MCP server as a subprocess. No token needed, no network involved — the fastest and simplest setup.
Use when: Your AI client supports stdio transport and runs on the same machine as SnappySnap. Recommended for Windsurf, Antigravity, and Claude Code.
Bridge (HTTP)
Your AI client connects to SnappySnap's built-in HTTP server using mcp-remote as a bridge. Requires Node.js and a security token.
Use when: Your AI client doesn't support stdio, or you prefer HTTP transport. Required for Claude Desktop. Also works for remote or networked setups.
Config Writer
Requires Node.js: Bridge mode uses npx mcp-remote. Install Node.js LTS first. On Windows, restart your AI client after installing Node.js.
Cursor Limitation: Cursor's MCP implementation cannot pass arguments to tools. Basic single-instance usage may work, but multi-instance routing is not possible. This is a Cursor limitation, not a SnappySnap issue. See Client Compatibility below.
Important: SnappySnap must be running with a plugin loaded before you start your AI client. The MCP server is built into SnappySnap — it needs to be open for the AI to connect.
Bridge mode token: When you enable MCP, a security token is generated — it's like a password that proves you're allowed to control the plugin. Find it in the settings panel after enabling MCP, or in: ~/Library/Application Support/SnappySnap/settings.xml. Keep it private.
Manual Setup (if Config Writer doesn't work)
If the Config Writer isn't loading properly, use the same steps manually:
Select your client, connection mode, and platform in the Config Writer above to generate the JSON
Copy the generated config
Open your client's config file from the table below and paste it in
Adjust any parameter by name ("turn up the drive")
Set exact values ("set reverb to 75%")
Change multiple parameters at once
Use fuzzy matching ("cut the highs" finds "High Cut Frequency")
Work with Snapshots
The AI can:
Save the current sound to any of 12 slots
Load saved snapshots
Name your snapshots ("save this as Heavy Bass")
List what's in each slot
Control Morphing
The AI can:
Set the morph position between snapshots
Use 1D morphing (simple left-to-right blend)
Use 2D morphing (XY pad style blending)
Check current morph state
Explore and Randomize
The AI can:
List all your installed plugins
Randomize parameters for happy accidents
Exclude specific parameters from randomization
Filter to only "sound design" parameters (skipping UI stuff)
Example Conversations
Sound Design Help
You: "I want this synth to sound more aggressive"
AI: I've increased the drive to 70%, added some saturation, and boosted the filter resonance. How does that sound?
Quick Preset Creation
You: "Save what we have now as 'Warm Pad' in slot 1"
AI: Done! I've saved the current settings as 'Warm Pad' in snapshot slot 1.
Morphing Between Sounds
You: "I want to blend between slot 1 and slot 2, about 30% towards slot 2"
AI: I've set the morph to 30% toward slot 2. You'll hear mostly the slot 1 sound with some slot 2 mixed in.
Controlled Randomization
You: "Randomize everything but keep the volume and effects bypass where they are"
AI: I've randomized 245 parameters while keeping volume and bypass settings unchanged.
Tips for Best Results
Be Specific About What You Want
Less Effective
More Effective
"Make it better"
"Make the bass fuller and reduce harshness"
"Change the sound"
"Add more movement and modulation"
"Fix it"
"The high frequencies are too harsh, tame them"
Use Musical Terms
The AI understands:
"Warmer" / "Brighter" / "Darker"
"More attack" / "Softer transients"
"Tighter bass" / "Looser low end"
"More presence" / "Cut through the mix"
"Wet" / "Dry" / "Blend"
Save Before Experimenting
Ask the AI to save your current sound before making big changes:
"Save this to slot 0 as 'Starting Point', then try making it more aggressive"
You can always go back if you don't like the changes.
Check What Changed
After the AI makes adjustments, you can ask:
"What parameters did you just change?"
This helps you learn what affects the sound.
Understanding Parameters
What Are Parameters?
Parameters are all the controls in a plugin — every knob, slider, and button. A simple plugin might have 20 parameters. A complex synth might have 1,000+.
Normalized Values
When the AI sets parameter values, it uses "normalized" values from 0.0 to 1.0:
0.0 = minimum (fully left, off, lowest)
0.5 = middle/default
1.0 = maximum (fully right, on, highest)
You don't need to think about this — just say "set it to 75%" and the AI handles the conversion.
AI-Relevant vs All Parameters
Many plugins have hundreds of parameters, but not all are useful for sound design. Some are:
Internal UI state
MIDI learn settings
Bypass switches
System controls
The AI can filter to just the "sound design" parameters, making responses faster and more focused.
Troubleshooting
"Connection Refused" or "fetch failed"
Problem: The AI can't connect to SnappySnap.
Solutions:
SnappySnap must be running first — open it before starting Claude Desktop
Check MCP Server is enabled in settings
Verify the port number matches what's shown in SnappySnap (default: 3001)
If using a DAW, make sure the plugin window is open
Try opening http://127.0.0.1:3001/mcp in a browser — if it doesn't load, SnappySnap's MCP server isn't running
Windows: "spawn npx ENOENT"
Problem: Claude Desktop can't find the npx command.
After installing, restart Claude Desktop completely
Make sure you're using npx.cmd (not npx) in your config
If still failing, verify Node.js is in your PATH by opening PowerShell and running: where.exe npx
Windows: "'C:\Program' is not recognized"
Problem: Paths with spaces are being split incorrectly.
Solution: Use npx.cmd directly (not the full path). If Node.js is properly installed, the simple config shown above will work.
"Unauthorized"
Problem: The AI's requests are rejected.
Solutions:
Copy a fresh token from SnappySnap settings
Make sure you're using the complete token (it's long!)
Check for extra spaces when you pasted it
The token format should be: Authorization: Bearer YOUR_TOKEN (note the space after "Bearer")
"No Plugin Loaded"
Problem: AI says there are no parameters to control.
Solutions:
Load a plugin in SnappySnap first
Wait for the plugin to fully initialize
Try asking "what plugin is loaded?" to verify
"No compatible message available" (Large Plugins)
Problem: Error when working with plugins that have many parameters (500+).
Solutions:
Use Learn Mode to select only the parameters you want AI to control
Click "Listen", wiggle the knobs you care about, then stop listening
This reduces 1000+ parameters down to just the ones you selected
Ask the AI to use ai_relevant_only: true when fetching parameters
Changes Not Working
Problem: AI says it changed something but you don't hear a difference.
Possible causes:
The parameter might not affect the current sound (e.g., changing oscillator 2 when it's off)
The change might be subtle — try more extreme values
Some parameters need specific conditions (e.g., filter cutoff matters more with resonance up)
Client Compatibility
SnappySnap's MCP server works with any client that supports the MCP protocol, but not all clients implement the spec equally. The key differentiator is argument passing — the ability to send parameters like instance_id to tools.
Client
Transport
All 15 Tools
Multi-Instance
Resources
Claude Desktop
stdio / HTTP
Yes
Yes
Yes
Claude Code
stdio / HTTP
Yes
Yes
Yes
Windsurf / Antigravity
stdio
Yes
Yes
Yes
Cursor
stdio
Partial
No
Unknown
Cursor Limitations
Cursor's MCP integration (CallMcpTool) does not support passing arguments to tool calls. This means:
Single instance: Basic tools work because instance_id is auto-routed when only one SnappySnap is running
Multiple instances: Any tool requiring instance_id will fail — the agent cannot specify which instance to target
Tools with required arguments (e.g. set_parameter, save_snapshot) will fail because the index/value/slot arguments cannot be passed
This is a limitation of Cursor's MCP client, not SnappySnap. Only read-only, argument-free tools like get_loaded_plugin_info and list_snapshots work reliably in Cursor.
Recommendation: For full MCP functionality, use Claude Desktop, Claude Code, Windsurf, or Antigravity. If you use Cursor, ensure only one SnappySnap instance is loaded and expect limited tool support.
Privacy and Security
Your Token is Your Password
Never share your MCP token publicly
Each SnappySnap instance has its own token
Tokens are stored locally on your computer
Local Connection Only
MCP runs on 127.0.0.1 (localhost) — it only accepts connections from your own computer. Remote connections are not supported by default.