Skip to content
Conduit

mcp server

bfxr2-mcp

avi892nash/bfxr2-mcpcommunitylistedunreviewed

Set up

Runs on your computer. Pick your agent and operating system.

Before you start

  • Node.js 20 or newer
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "bfxr2-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "bfxr2-mcp-server"
      ]
    }
  }
}

same format Cursor, GitHub Copilot CLI, Junie, JetBrains AI Assistant, Augment (Auggie CLI), Factory Droid, Kiro, Devin CLI +12

Values in angle brackets are placeholders. Restart Claude Desktop after editing its config.Claude Desktop docs

README

synced Oct 26, 2026

Bfxr2 MCP Server

License: MIT Node.js Version MCP

A Model Context Protocol (MCP) server that provides music and sound effect generation tools using the existing Bfxr2 codebase.

Table of Contents

Features

  • Sound Effect Generation: Create preset sound effects (pickup, laser, explosion, etc.)
  • Custom Sound Creation: Full parameter control for custom sounds
  • Random Generation: Generate random sounds with optional seeding
  • WAV Export: Export generated sounds as WAV files (base64 or data URI)
  • Parameter Inspection: View and modify sound parameters
  • Zero Code Duplication: Uses existing Bfxr2 JavaScript files directly

Installation

cd mcp
npm install

MCP Server Configuration

To use the bfxr2 MCP server with Cline or other MCP clients, add this configuration:

{
  "mcpServers": {
    "bfxr2-music-generator": {
      "autoApprove": [
        "list_presets",
        "get_parameters",
        "generate_sound_effect",
        "randomize_sound"
      ],
      "disabled": false,
      "timeout": 30,
      "type": "stdio",
      "command": "node",
      "args": [
        "/path/to/your/bfxr2/mcp/src/server.js"
      ]
    }
  }
}

Note: Update the path in args to match your actual bfxr2 installation directory.

Usage

Start the MCP Server

npm start

Available Tools

  1. generate_sound_effect

    • Generate preset sound effects
    • Types: pickup, laser, explosion, powerup, hit, jump, blip
    • Optional custom parameter overrides
  2. generate_named_sound

    • Generate sounds from precomputed named presets
    • Presets: cry, pluck, splash, droplet, rip, woof, pushrock, glass, bark, powerdown, smallbark, bounce
    • Each preset has carefully tuned parameters for specific sound characters
  3. create_custom_sound

    • Full control over all sound parameters
    • Specify waveType, frequency, envelope, effects, etc.
  4. create_sound_with_wave

    • Create sounds using wave type by name
    • Wave types: Square, Saw, Sin, White, Triangle, Rasp, Tan, Whistle, Breaker, Bitnoise, FMSyn, Voice
  5. randomize_sound

    • Generate completely random sounds
    • Optional seed for reproducible results
  6. mutate_sound

    • Create variations of the last generated sound
    • Slightly randomizes parameters while maintaining general character
  7. export_wav

    • Export last generated sound as WAV
    • Formats: base64 or data URI
  8. get_parameters

    • View current sound parameters
  9. list_presets

    • List available generator presets (pickup, laser, etc.)
  10. list_named_presets

    • List available named presets with descriptions (cry, bark, splash, etc.)
  11. list_wave_types

    • List all available wave types with descriptions

Example Tool Calls

{
  "name": "generate_sound_effect",
  "arguments": {
    "type": "laser",
    "customParams": {
      "frequency_start": 0.7,
      "attackTime": 0.1
    }
  }
}
{
  "name": "create_custom_sound",
  "arguments": {
    "parameters": {
      "waveType": 2,
      "frequency_start": 0.5,
      "sustainTime": 0.3,
      "vibratoDepth": 0.2
    }
  }
}
{
  "name": "generate_named_sound",
  "arguments": {
    "preset": "bark",
    "filepath": "/tmp/bark.wav"
  }
}
{
  "name": "create_sound_with_wave",
  "arguments": {
    "waveType": "Whistle",
    "parameters": {
      "frequency_start": 0.6,
      "sustainTime": 0.4
    },
    "filepath": "/tmp/whistle.wav"
  }
}
{
  "name": "mutate_sound",
  "arguments": {
    "filepath": "/tmp/mutated.wav"
  }
}

Architecture

The MCP server uses a lightweight wrapper approach:

  • bfxr-wrapper.js: Provides minimal browser API mocks and loads existing Bfxr2 files
  • server.js: MCP server implementation with tool handlers
  • No code duplication: Directly imports from ../js/ directory

Wave Types

IDNameDescription
0SquareClassic square wave, good for retro game sounds
1SawSawtooth wave, raspy and buzzy
2SinPure sine wave, clean and simple
3WhiteWhite noise, good for explosions and static
4TriangleTriangle wave, softer than square
5RaspPeriodic 1-bit noise, digital buzz
6TanTangent wave, potentially crazy/distorted
7WhistleSin with overtone, breathy/hollow
8BreakerQuadratic wave, smooth and slick
9BitnoisePeriodic 1-bit white noise, glitchy
10FMSynFM synthesis, dense and breathy
11VoiceDigital voice sample

Named Presets

Pre-configured sounds with carefully tuned parameters:

NameWave TypeDescription
cryVoiceA crying/whimpering voice sound
pluckVoiceA plucked string instrument sound
splashSinA water splash effect
dropletWhistleA water droplet sound
ripVoiceA tearing/ripping sound
woofSquareA dog bark/woof sound
pushrockWhiteA heavy object pushing/scraping sound
glassWhistleA glass breaking/tinkling sound
barkRaspA sharp bark sound
powerdownWhiteA power-down/shutdown sound
smallbarkRaspA small/quiet bark sound
bounceFMSynA bouncy/springy sound

Sound Parameters

Key parameters you can control:

  • waveType: Wave shape (0-11)
  • frequency_start: Base frequency (0-1)
  • frequency_slide: Frequency sweep (-0.5 to 0.5)
  • attackTime: Volume envelope attack (0-1)
  • sustainTime: Volume envelope sustain (0-1)
  • decayTime: Volume envelope decay (0.03-1)
  • vibratoDepth: Vibrato strength (0-1)
  • vibratoSpeed: Vibrato speed (0-1)

Contributing

We welcome contributions! Please see CONTRIBUTING.md for guidelines on how to get started.

Changelog

See CHANGELOG.md for a list of changes in each version.

License

This project is licensed under the MIT License - see the LICENSE file for details.

↑↓ navigate openesc close