bfxr-mcp
Click on "Install 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., "@bfxr-mcpgenerate a retro laser sound effect"
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.
bfxr-mcp
Game sound effects, two ways: an MCP server so an assistant can make them for you, and a local web app where you type what you want, hear the variations, and download them. Both write to the same folder and share one library, so a sound Claude generates over MCP shows up on the page and vice versa.
The synthesis code is vendored verbatim from increpare/bfxr2
(MIT) and run in a Node vm sandbox, so the output is the same DSP the
Bfxr website produces — no browser, no reimplementation.
Install
npm installFiles land in $BFXR_OUTPUT_DIR, defaulting to ~/Downloads/bfxr-sounds. Every tool
also takes an output_dir argument. Existing files are never overwritten — a second
coin.wav becomes coin-2.wav.
Then register the MCP server with your client. A config file on disk is not enough — the client has to load it, and a chat that started before that will not see the tools.
Cursor
This repo already ships .cursor/mcp.json. Open this folder as
the workspace, then:
Cursor Settings → MCP (or Customize → MCP in the sidebar).
Find bfxr and turn it on. Cursor may ask you to approve a local stdio server.
If the status is not green, fully quit Cursor and reopen it.
Start a new Agent chat. Tools are bound when the conversation starts, so an already-open thread will still say it has no Bfxr access.
To use Bfxr while working in a different project (a game repo, etc.), add it
globally instead. Put this in ~/.cursor/mcp.json, with a real absolute path:
{
"mcpServers": {
"bfxr": {
"command": "node",
"args": ["/absolute/path/to/bfxr-mcp/src/index.js"],
"env": { "BFXR_OUTPUT_DIR": "${userHome}/Downloads/bfxr-sounds" }
}
}
}Project config (.cursor/mcp.json) and global config (~/.cursor/mcp.json) are
merged; if the same name appears in both, the project file wins.
If it still does not connect: View → Output, pick MCP Logs from the dropdown.
Claude Code
From this repo:
claude mcp add --scope user bfxr -- node "$(pwd)/src/index.js"--scope user keeps it available in every Claude Code session, not just this folder.
Other MCP clients
Anything that reads an MCP config file:
{
"mcpServers": {
"bfxr": {
"command": "node",
"args": ["/absolute/path/to/bfxr-mcp/src/index.js"],
"env": { "BFXR_OUTPUT_DIR": "~/Downloads/bfxr-sounds" }
}
}
}Related MCP server: voiceroid_daemon-mcp
The web app
npm run web # → http://localhost:4747Type a description, get several variations, click to play. Rename them, drop them
into groups, star the keepers, download one .wav or a whole group as a .zip.
↻ makes small variations of a sound you like; ↗ opens it on bfxr.net to tweak
by ear. It serves on loopback only and reads/writes the same output folder as the
MCP server.
BFXR_PORT picks the port (default 4747, next free port if taken).
The editor
✎ on any sound opens the full Bfxr editor — the same waveform buttons and
parameter sliders the website has, without leaving the library. Sliders run down
the left, the scope and the controls sit on the right, and the whole thing fits
on one screen without scrolling:
A square waveform display of the sound as it currently stands, with a playhead while it plays. Click it (or hit space) to hear it again.
All 12 waveforms as buttons, with the upstream tooltips. The Square Duty panel greys itself out when a square wave isn't selected, exactly as on bfxr.net.
31 sliders, grouped into Envelope, Frequency, Vibrato, Pitch Jump, Harmonics, Square Wave, Repeat, Flanger, Filters and Bit Crush. Anything moved off its default is highlighted; click the number to put it back.
Randomize / Mutate / Defaults / Revert under the scope, and the preset generators as a starting point.
Letting go of a slider re-synthesizes on the server and plays the result, so what
you hear is the same DSP that writes the file — nothing is approximated in the
browser. Save changes rewrites that sound's .wav in place, keeping its name,
group and links; Save as new leaves the original alone. Nothing touches disk
until you save.
✎ New starts from the default parameters, and Open link… takes a
bfxr.net ?sfx= permalink or the contents of a .bfxr file — so a sound made
anywhere, by you or by Claude over MCP, can be opened and edited here.
How the prompt box works
Two designers, chosen automatically:
When | What it does | |
Keyword mapper | always available, no setup | Matches words against a built-in lexicon — "coin/laser/explosion…" picks the preset, "deep, crunchy, wobbly, short, metallic…" adjust the parameters. Instant, offline, deterministic. |
Claude API |
| Sends your description plus the full parameter reference to |
The badge in the top right shows which one is live. Claude is used when credentials
exist; any failure falls back to the keyword mapper and says so. Force the offline
one with BFXR_DESIGNER=keywords.
MCP tools
Tool | What it does |
| Synthesize from a preset ( |
| Small random variations on a sound you already like, from a permalink, a |
| Decode a bfxr.net permalink or |
| All 32 parameters with ranges, defaults and descriptions, plus presets and waveforms. |
| Play a |
Every generated sound comes back with a https://www.bfxr.net/?sfx=... permalink, so
you can open it in the web app and tweak it by ear — the assistant can't hear its own
output, which is why asking for 3–5 variations and picking one works better than
iterating blind.
save_bfxr: true also writes a .bfxr project file next to each .wav, loadable via
"Open Data" on bfxr.net. embed_audio: true returns the audio inline in the tool
result for clients that can play it.
Reproducibility
Presets randomize themselves, and noise waveforms are random at render time. Pass
seed to pin both: the same call with the same seed always yields byte-identical
audio. With count > 1, variation i uses seed + i.
Example
"Make me a laser sound for a small enemy — a few options"
generate_sound { preset: "laser_shoot", name: "enemy_laser", count: 4, seed: 12 }
→ ~/Downloads/bfxr-sounds/enemy_laser-{1..4}.wav"The second one, but lower and longer"
load_sound { source: "<permalink for #2>" }
generate_sound { name: "enemy_laser_deep", params: { ...tweaked frequency_start, decayTime } }Layout
src/index.js MCP server + tool definitions
src/web.js local HTTP server for the web app
src/ui/index.html the page (no build step, no dependencies)
src/engine.js loads the vendored Bfxr synth in a vm, params/permalinks/rendering
src/sounds.js render → .wav → library entry (shared by MCP and web)
src/library.js library.json: the index of every sound in the output folder
src/design.js keyword prompt → preset + parameters
src/claude.js optional Claude API designer
src/wav.js 16-bit mono PCM WAV encoder
src/zip.js minimal zip writer for pack downloads
src/output.js output paths, safe filenames, playback
vendor/bfxr2/ verbatim copies of the upstream synth files (MIT, see LICENSE)
test/ node --test suiteslibrary.json lives in the output folder next to the .wav files. Deleting a .wav
by hand is safe — orphaned entries are dropped on the next read. It's read-modify-write
with no locking, so don't generate from the web app and an MCP client at the same
instant.
To refresh the vendored engine, copy these files from a checkout of bfxr2 and update
vendor/bfxr2/UPSTREAM_COMMIT.txt:
js/globals.js js/synths/templates.js js/audio/AKWF.js
js/audio/Bfxr_DSP.js js/synths/SynthBase.js js/synths/Bfxr.jsThey are loaded in that order (matching upstream index.html) and concatenated into a
single script, so top-level class declarations resolve across files the way they do
with <script> tags.
Deviation from upstream
mutate_sound deliberately skips Bfxr's rectify_params() step. Upstream's Mutate
button re-rolls the base frequency and punch outright; here mutations stay recognizably
close to the source sound, which is what you want when refining something you like.
Tests
npm testCovers the synth and WAV output, the web API end-to-end (a real server on a temp folder), the keyword designer, and the zip writer. The Claude designer is tested against a stub Messages endpoint — request shape and response handling are real, but nothing here has been run against the live API.
Credits
Bfxr and Bfxr2 by increpare (Stephen Lavelle), built on
DrPetter's Sfxr and Tom Vian's as3sfxr. Vendored under MIT — see vendor/bfxr2/LICENSE.
Available Tools
5 toolsgenerate_soundGenerate a game sound effectA
Synthesize a retro/8-bit game sound effect with the Bfxr engine and save it as a .wav file.
Presets: pickup_coin, laser_shoot, explosion, powerup, hit_hurt, jump, blip_select, random, tone.
Pick the preset closest to what was asked for, then shape it with params:
coin/pickup/collect -> pickup_coin; laser/shoot/zap -> laser_shoot; explosion/boom -> explosion
powerup/level-up -> powerup; damage/hurt/impact -> hit_hurt; jump/hop -> jump; UI click/menu blip -> blip_select
anything else -> start from
tone(a plain sine) orrandomand set params by hand. Useful shaping params: frequency_start (pitch), frequency_slide (up/down glide), sustainTime + decayTime (length), sustainPunch (attack pop), lpFilterCutoff (muffle), bitCrush (lo-fi crunch), vibratoDepth/Speed, overtones (thicker).
Never set play or embed_audio, and never call play_sound — the user always plays sounds in the library UI. Prefer count=3..5, then report file paths. After writing, refresh the library in Cursor at http://localhost:4747. Each sound comes back with a bfxr.net permalink the user can open to tweak it by ear.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Base filename, e.g. 'coin' -> coin.wav. Default: the preset name. | |
| play | No | Do not set this. The user plays sounds in the library UI. | |
| seed | No | Seed the randomization so the same call reproduces the same sound(s). | |
| count | No | How many variations to generate (presets are randomized). Default 1. | |
| params | No | Bfxr parameter overrides, applied on top of the preset. Any of: masterVolume, waveType, attackTime, sustainTime, sustainPunch, decayTime, compressionAmount, frequency_start, frequency_slide, frequency_acceleration, min_frequency_relative_to_starting_frequency, vibratoDepth, vibratoSpeed, pitch_jump_repeat_speed, pitch_jump_amount, pitch_jump_onset_percent, pitch_jump_2_amount, pitch_jump_onset2_percent, overtones, overtoneFalloff, squareDuty, dutySweep, repeatSpeed, flangerOffset, flangerSweep, lpFilterCutoff, lpFilterCutoffSweep, lpFilterResonance, hpFilterCutoff, hpFilterCutoffSweep, bitCrush, bitCrushSweep. Call list_parameters for ranges and meanings. | |
| preset | No | Starting point. One of: pickup_coin, laser_shoot, explosion, powerup, hit_hurt, jump, blip_select, random, tone. Default: tone. | |
| save_bfxr | No | Also write a .bfxr project file next to each .wav. Default false. | |
| wave_type | No | Waveform by name. Overrides the preset's choice. | |
| output_dir | No | Where to write files. Default: $BFXR_OUTPUT_DIR or ~/Downloads/bfxr-sounds. | |
| embed_audio | No | Do not set this. The user plays sounds in the library UI. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses side effects: saving .wav files, optionally writing .bfxr project files, and requiring a library refresh. It also informs the agent about the bfxr.net permalink in the output and warns against setting play/embed_audio. This gives a clear picture of the tool's behavior, though it doesn't cover file-overwrite or directory-creation edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is structured with clear sections: purpose, preset mapping, shaping params, and usage rules. Every sentence conveys actionable information—no fluff or repetition. Despite its length, it remains efficient and scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's 10 parameters, nested params object, and no output schema, the description covers all essential aspects: how to choose presets, how to shape sounds, what not to do, and the follow-up refresh step. It also points to `list_parameters` for detailed ranges, filling any residual gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already has 100% parameter coverage, so the description adds extra semantic value by grouping useful shaping params with everyday meanings (frequency_start=pitch, sustainTime+decayTime=length, lpFilterCutoff=muffle). It also maps presets to user intents, which helps select the right preset. This goes beyond the schema's basic descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Synthesize a retro/8-bit game sound effect with the Bfxr engine and save it as a .wav file.' This clearly states the action (synthesize), the resource (retro/8-bit game sound effect), and the output (.wav file). It also distinguishes from siblings by explicitly saying 'never call play_sound'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides preset mapping rules (coin→pickup_coin, laser→laser_shoot, etc.), and tells the agent to use `tone` or `random` for anything else. It also gives explicit exclusions ('Never set play or embed_audio, and never call play_sound') and practical guidance ('Prefer count=3..5', 'refresh the library in Cursor'). These instructions define exactly when and how to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_parametersList Bfxr parameters and presetsA
Every Bfxr parameter with its range, default and what it does, plus the available presets and waveforms. Read this before hand-crafting a sound with params.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the transparency burden. It clearly discloses the tool's behavior by enumerating the exact informational content returned: every parameter with range, default, description, plus presets and waveforms. While it doesn't explicitly say 'read-only', listing is inherently non-mutating and the tool has no parameters, so this is adequately transparent for a reference tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long and perfectly front-loaded: the first sentence states exactly what the tool provides, and the second gives a clear instruction on when to use it. Every word earns its place, with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, no output schema, no nested objects), the description is complete. It explains what is returned (parameter metadata, presets, waveforms) and when to use it, and the sibling tools are all action-oriented, so this reference tool is well-contextualized within the set.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description adds useful semantic context by mentioning `params` as the hand-crafting mechanism in sibling tools, but it doesn't need to describe any input schema since none exists. This is appropriate for a parameterless reference tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('list'), names the resource ('Bfxr parameters and presets'), and explicitly details what is returned (range, default, meaning, presets, waveforms). This clearly distinguishes it from sibling tools like play_sound or generate_sound, which perform actions rather than provide reference data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit trigger scenario: 'Read this before hand-crafting a sound with `params`.' This tells the agent when to use the tool, but it doesn't explicitly mention when not to use it or name alternative reference tools. Still, for a simple listing tool, this provides sufficient context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
load_soundRead a sound's parametersA
Decode a bfxr.net permalink or a .bfxr file into its parameters, optionally re-rendering it to a .wav. Use this to inspect or edit a sound the user shares.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Base filename when render_wav is set. | |
| source | Yes | A bfxr.net permalink (or ?sfx= payload), or a path to a .bfxr file. | |
| output_dir | No | ||
| render_wav | No | Also write the sound out as a .wav. Default false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must carry the transparency burden. It discloses the core decoding behavior and the optional .wav side-effect ('optionally re-rendering it to a .wav'), but it does not explain error behavior, file system side effects, or return structure beyond 'parameters'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary purpose, and contains no redundancy. Every word adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 parameters and no output schema, the description covers the main action and when to use it, while 'Decode ... into its parameters' implies the return value. It lacks edge-case details like defaults or error handling, but is sufficient for basic invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%. The description reinforces source semantics by naming 'bfxr.net permalink' and '.bfxr file' and connects render_wav to 're-rendering it to a .wav'. However, it does not add detail about output_dir or name, so it provides only modest context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Decode' and identifies the exact resources (bfxr.net permalink or .bfxr file) and outputs ('into its parameters', optionally a .wav). This clearly distinguishes it from sibling tools like generate_sound or play_sound.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a clear use case: 'Use this to inspect or edit a sound the user shares.' This tells when to invoke the tool. However, it does not explicitly state when not to use it or name alternatives, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mutate_soundMake variations of an existing soundA
Nudge every parameter of an existing sound by a small random amount to produce close variations — the 'Mutate' button in Bfxr. Use this when the user likes a sound but wants it 'a bit different'. Give the source as a bfxr.net permalink, a path to a .wav generated by this server's sibling .bfxr file, a path to a .bfxr file, or a raw params object. Never set play or embed_audio, and never call play_sound — the user plays sounds in the library UI. After writing, refresh the library in Cursor at http://localhost:4747.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Base filename for the variations. | |
| play | No | Do not set this. The user plays sounds in the library UI. | |
| seed | No | Seed for reproducible mutations. | |
| count | No | How many variations. Default 3. | |
| amount | No | Mutation strength as a fraction of each parameter's range. Default 0.1. | |
| params | No | Source parameters, if you have them instead of a permalink/file. | |
| source | No | A bfxr.net permalink (or ?sfx= payload), or a path to a .bfxr file. | |
| save_bfxr | No | ||
| output_dir | No | ||
| embed_audio | No | Do not set this. The user plays sounds in the library UI. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the random mutation behavior, accepted source forms, and the post-write refresh step. However, it does not explain filesystem side effects, output locations, or whether existing files are overwritten, leaving operational details unclear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five focused sentences, front-loaded with the core mechanism, then use case, source guidance, constraints, and a follow-up action. Every sentence earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter tool with nested objects, no output schema, and no annotations, the description covers most decision-relevant context: what it does, when to use it, source formats, prohibitions, and a post-action step. It omits semantics for save_bfxr/output_dir and exact write behavior, but is otherwise quite complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is high (80%), so the schema documents most parameters. The description adds valuable context for the source parameter (permallink, .wav/.bfxr paths, raw params) and reinforces constraints on play/embed_audio. It does not compensate for the undocumented save_bfxr and output_dir parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly identifies the operation ('nudge every parameter by a small random amount'), target ('existing sound'), and result ('close variations'). This distinguishes it from sibling generate_sound and matches the title/familiar 'Mutate' button reference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use ('when the user likes a sound but wants it a bit different') and provides clear exclusions ('never set play or embed_audio, never call play_sound'). It does not explicitly name sibling tools as alternatives, but the contrast is implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
play_soundPlay a sound fileA
Do not call this. The user always plays sounds in the library web app. Only use if they explicitly ask you to play through the machine speakers.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | Path to the .wav file to play. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the burden. It discloses that the tool plays via machine speakers and should be used only on explicit request, implying it is an exceptional, potentially disruptive action. However, it doesn't detail other behavioral traits like duration or volume.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sentences, front-loaded with a critical warning, and every sentence carries meaningful information. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with a complete schema and no output schema, the description adequately covers purpose, usage context, and the exception. It lacks explicit mention of audio disruption, but 'machine speakers' implies it, making it reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides 100% parameter description ('Path to the .wav file to play.'). The tool description adds no additional parameter semantics, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool plays a sound file through machine speakers, with a specific verb ('play') and resource ('sound file'). It distinguishes from the normal web app playback, though it doesn't explicitly name sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use and when-not-to-use guidance: 'Do not call this' normally, and 'Only use if they explicitly ask you to play through the machine speakers.' This clearly differentiates from the standard library web app playback scenario.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
5 tool updates
v0.1.0- First observed
generate_sound - First observed
list_parameters - First observed
load_sound - First observed
mutate_sound - First observed
play_sound
TDQS
Each tool has a clearly distinct role: generate_sound creates new sounds, mutate_sound creates variations of existing ones, load_sound inspects existing sounds, list_parameters provides reference data, and play_sound is explicitly marked as not to be called. No two tools overlap in purpose.
All tools follow the same verb_noun snake_case pattern (play_sound, generate_sound, mutate_sound, load_sound, list_parameters), making the naming perfectly consistent and predictable.
5 tools is well-scoped for a sound synthesis server. Each tool covers a distinct part of the workflow (create, vary, inspect, reference, and playback), and none feel redundant or unnecessary.
The toolset covers the core domain of generating and manipulating retro sound effects: generation, mutation, loading existing sounds, and parameter reference. The only potential gap (playback) is explicitly handled by the external library UI, and play_sound is provided as a fallback, so there are no dead ends.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for Producer/Riffusion AI music generation
MCP server exposing the AceDataCloud Fish Audio API (text-to-speech with voice conditioning)
MCP server for Text-to-Speech
An MCP server that provides asset auto generator
Related MCP Servers
- AlicenseBqualityDmaintenanceAn MCP server that enables AI assistants to search, analyze, and retrieve information about audio samples from Freesound.org through their API.82MIT
- FlicenseAqualityDmaintenanceAn MCP server that enables text-to-speech generation and phonetic kana conversion using VOICEROID2 via voiceroid_daemon. It supports customizable voice parameters and provides cross-platform audio playback for synthesized speech.3-
- AlicenseAqualityBmaintenanceAn MCP server that generates music using your Suno account, enabling credit checking, song generation, and MP3 downloads without third-party APIs.7MIT
- FlicenseNot gradedqualityFmaintenanceAn MCP server that plays chord progressions via MIDI/WAV synthesis.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/zaynabed/bfxr-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server