sfx
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., "@sfx make a chunky laser with a short tail and play it"
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.
sfx-api
Parametric video-game sound-effect synthesis for coding agents. You describe a sound to Claude Code or Codex, the agent writes a layered synthesis spec, and this server renders a normalized 16-bit WAV and plays it so you can react in words.
Runs on CPU, no GPU or model downloads. Python 3.11+, Windows first.
Install
cd C:\dev\sfx-api
python -m venv .venv
.venv\Scripts\pip install -e ".[dev,fx]"
.venv\Scripts\sfx demo --play # renders every preset into .\out and plays themThe fx extra installs Spotify pedalboard for better reverb, chorus, compressor, and pitch
shift. It is GPLv3. Without it, built-in NumPy effects are used.
Related MCP server: SuperCollider MCP Server
Hook into Claude Code
claude mcp add sfx -- C:\dev\sfx-api\.venv\Scripts\sfx-mcp.exeOr add to .mcp.json in a project:
{
"mcpServers": {
"sfx": {
"command": "C:\\dev\\sfx-api\\.venv\\Scripts\\sfx-mcp.exe",
"env": { "SFX_OUT_DIR": "C:\\path\\to\\game\\Assets\\Audio\\Generated" }
}
}
}Hook into Codex
Add to ~/.codex/config.toml:
[mcp_servers.sfx]
command = "C:\\dev\\sfx-api\\.venv\\Scripts\\sfx-mcp.exe"
[mcp_servers.sfx.env]
SFX_OUT_DIR = "C:\\path\\to\\game\\Assets\\Audio\\Generated"Then in either host: "Read the sfx cookbook, then make me a chunky retro laser with a short tail and play it."
REST API and preview page
.venv\Scripts\sfx serve-http --port 8765Opens a preview page at http://127.0.0.1:8765/ that lists every render in the output folder
with play buttons, features, warnings, the spec, a merge-patch box to tweak and re-render, a
variations button, and A/B comparison. The REST API is documented at /api/docs: render a
spec, render or save presets, tweak by id, variations, analyze, play, and download WAVs. The
MCP server is also mounted at /mcp over Streamable HTTP for hosts that prefer it to stdio.
Tools
Tool | Purpose |
| Compact schema, cookbook, and preset names; sections available. Agents call this once. |
| Built-in and saved presets. |
| Render a SoundSpec. Returns path, id, features, normalization info, and warnings. |
| Render a preset with optional overrides. |
| JSON merge patch on a previous render by id, re-render. |
| N pitch, filter, timing, and gain jittered siblings for random containers. |
| Play through the default output device. |
| Features for any WAV, including reference sounds. |
| Save a spec to the user preset library. |
Resources: sfx://schema, sfx://cookbook, sfx://presets.
Environment
Variable | Effect |
| Where renders and sidecar specs go. Default |
| User preset folder. Default |
| Make |
| Force NumPy effects even if pedalboard is installed. |
CLI
sfx render spec.json --play
sfx preset laser --set '{"layers":[...]}' --play
sfx variations coin -n 6
sfx tweak is MCP-only; use render with an edited sidecar JSON from ./out
sfx analyze out\coin-ab12cd.wav
sfx list | sfx schema | sfx cookbook | sfx demo | sfx serveSpec at a glance
{
"name": "coin",
"layers": [
{
"id": "body",
"source": {"type": "osc", "wave": "square", "duty": 0.5},
"pitch": {"start_hz": 988, "end_hz": 1319, "curve": "step", "step_at_ms": 80},
"amp": {"attack_ms": 1, "hold_ms": 70, "decay_ms": 260, "release_ms": 40, "punch": 0.15},
"filter": {"type": "lowpass", "cutoff_hz": 6000, "end_cutoff_hz": 2500, "q": 0.7},
"fx": [{"type": "bitcrush", "bits": 8}]
}
],
"master": {"target_lufs": -16, "true_peak_dbtp": -1}
}Sources: osc (sine, triangle, saw, square with duty), noise (white, pink, brown, bit), fm
(two operators), sfxr (a jsfxr-compatible voice with the original p_* fields). Effects: bitcrush, distortion, clip, compressor, delay, reverb, chorus, gain,
pitch_shift. See PLAN.md for the design and roadmap.
Evaluating the docs with real agents
eval/run_group.sh <claude|codex> <A|B|C|D> runs a non-interactive host session that reads the
docs, designs five target sounds from eval/targets.json, and reports what was unclear. Codex
needs --dangerously-bypass-approvals-and-sandbox (already in the script) to call MCP tools
without a human approving each one; interactive Codex sessions prompt instead. Results land in
eval/results/ and renders in out/eval/. The cookbook's feature definitions, loudness notes,
and several recipes came out of the first round.
Tests
.venv\Scripts\python -m pytestAvailable Tools
9 toolssfx_analyzeC
Measure any WAV: active_ms, attack_ms, decay_ms, pitch_hz_start/end, band_db, lufs, peak. Definitions in the cookbook.
Inputs: sound_id (required), out_dir. Returns: object
sfx_docsA
Documentation for designing sounds. section: 'all' (compact schema + cookbook + preset names), 'schema' (compact field list), 'json_schema' (full JSON schema), 'cookbook', or 'presets' (full preset specs). Call with 'all' once before designing sounds.
Inputs: section.
sfx_list_presetsA
List available presets with a one-line summary of each.
Inputs: no named parameters. Returns: object
sfx_playA
Play a WAV (by id or path) through the machine's default audio output so the user can hear it.
Inputs: sound_id (required), out_dir. Returns: object
sfx_renderA
Render a SoundSpec to a 16-bit mono WAV. Returns the file path, an id for later tweaks, features (active_ms, attack_ms, decay_ms, pitch_hz_start/end, band_db, lufs; definitions in the cookbook), normalization info, and warnings such as a missed loudness target. out_dir defaults to the SFX_OUT_DIR environment variable or ./out under the server's working directory.
Inputs: spec (required), out_dir. Returns: object
sfx_render_presetB
Render a named preset, optionally with a JSON merge patch of overrides applied first.
Inputs: name (required), out_dir, overrides. Returns: object
sfx_save_presetC
Save a spec (inline, or from a render id) to the user preset library under a name.
Inputs: name (required), spec, out_dir, sound_id. Returns: object
sfx_tweakA
Apply a JSON merge patch to a previous render (by id or WAV path) and re-render. Example patch: {"layers": [...]} replaces all layers; {"master": {"target_lufs": -14}} changes one field. Lists are replaced wholesale, so send the full layers list when editing a layer.
Inputs: patch (required), sound_id (required), out_dir. Returns: object
sfx_variationsA
Render N randomized siblings of a sound (by id, path, or inline spec) for engine random containers. Jitter amounts come from spec.variation: pitch_cents, filter_cents, timing_ms, gain_db. Ids are -v1..vN.
Inputs: spec, count, out_dir, sound_id. Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 9 tools
Each tool has a clearly distinct role: docs, render, preset render, preset listing, tweak, variations, playback, analysis, and saving presets. The only similar pair—render and render_preset—is disambiguated by input type (inline spec vs. named preset).
Most tools follow a consistent sfx_<verb>[_<object>] pattern (render, render_preset, list_presets, save_preset, analyze, play). Minor deviations: sfx_docs and sfx_variations are noun-style rather than verb-based, so the pattern is not perfectly consistent.
Nine tools is well-scoped for a sound design toolkit. Each tool covers a distinct stage of the workflow without unnecessary redundancy or bloat.
The surface covers the full design workflow: document, render, tweak, randomize, listen, analyze, and save presets. Minor gaps like deleting or editing presets and managing previous renders are absent but not blocking for core sound design.
Related MCP Connectors
Game-design skills for AI agents: describe a problem, get the right skill. Plus free sound effects.
Audio for your agent: transcribe, speak, translate, summarise, plus sound effects and music.
Game sound effects from a text prompt: game-ready WAVs with seamless loops and variations.
CC0 sound effects API for AI agents — search, preview, and download via MCP.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceProvides audio playback functionality for AI agents, allowing them to play notification sounds when coding tasks are completed.1MIT
- 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
- AlicenseAqualityCmaintenanceGenerates four game-ready AI sound effect candidates from a text description, lets users audition them, and installs only the selected WAV into Unity, Godot, or generic game projects.628 npm1MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to search, rank, and retrieve 330 synthesized sound effects, themes, and spoken lines, and to generate ready-to-paste playback code or whole-app sound kits through a zero-dependency stdio MCP interface.227 npmMIT