Skip to main content
Glama

Claude Collider

An MCP (Model Context Protocol) server that enables your LLM to generate and play music through SuperCollider. Describe the sounds you want, and your LLM will write and execute SuperCollider code in real-time.

Live coding from inside this repository is recommended but completely optional. This repo contains Claude-specific instructions (CLAUDE.md, skills) that make Claude the best songwriter out there, but the MCP server should work with any MCP client.

Requirements

  • SuperCollider installed on your system

  • Node.js 18+

  • Claude Code, Claude Desktop, or any other MCP client

Related MCP server: waveform-MCP

Installation

git clone https://github.com/jeremyruppel/claude-collider.git
cd claude-collider
npm run setup
claude

It's easiest to work from the Claude Collider directory. There, you can take advantage of the agent documentation and skills that make Claude musically inclined.

What It Can Do

Major Features

  • Auto-boots SuperCollider within your LLM session and exposes MCP tools to interact with it

  • Music theory LLM skill and utility SuperColloder classes for arrangement, melody development, and a breakbeat mangler

  • Sampler with support for auto-loading samples from user directories

  • "Tape" format for recording and playing back songs across LLM sessions

  • 27+ built-in synths across drums, bass, leads, pads, and utility categories

  • 18+ built-in effects including dynamics, sidechain, filters, reverb, delay, modulation, distortion, and stereo processing

See the ClaudeCollider API reference for the full list of synths, effects, and class documentation.

Example Prompts

  • "Boot SuperCollider and make a four-on-the-floor beat with a deep kick and shaker"

  • "Make a 303-style acid bass with a resonant filter sweep, run it through distortion and delay"

  • "Set up sidechain compression so the kick ducks the bass and the pad"

  • "Load the amen break sample, slice it into 16, and rearrange it into a choppy DnB pattern"

  • "Write a lead melody using motif development — start with a short phrase, then transpose and invert it"

  • "Compose a full arrangement with an intro, two builds, two drops, a breakdown, and an outro"

  • "Record this session as a tape called late-night-acid, then play it back with the arrangement"

  • "The bass line is boring — use the songwriting skill to rewrite it with approach notes and octave jumps"

  • "Connect my MIDI keyboard to the pad synth with mod wheel controlling the filter cutoff, and sync MIDI clock to the arrangement"

  • "Build a granular texture from the vocal sample, layer a polymetric 5-beat kick under it, and arrange the whole thing into a slow build"

Claude Code Configuration

This repo includes a .mcp.json that registers the server for anyone running Claude Code from the repo root. Build first, then start Claude Code and approve the claude-collider server when prompted:

npm install && npm run build
claude

To use it from another project, add it to that project's scope:

claude mcp add -t stdio -s project claude-collider -- node /path/to/claude-collider/dist/index.js

Or add it globally so it's available in all projects:

claude mcp add -t stdio -s user claude-collider -- node /path/to/claude-collider/dist/index.js

To configure optional environment variables for sample and recording paths:

claude mcp add -t stdio -s project \
  -e CC_SAMPLES_PATH=/path/to/your/samples \
  -e CC_RECORDINGS_PATH=/path/to/your/recordings \
  claude-collider -- node /path/to/claude-collider/dist/index.js

Claude Desktop Configuration

Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "claude-collider": {
      "command": "node",
      "args": ["/path/to/claude-collider/dist/index.js"],
      "env": {
        "CC_SAMPLES_PATH": "/path/to/your/samples",
        "CC_RECORDINGS_PATH": "/path/to/your/recordings"
      }
    }
  }
}

The env block is optional in all configurations. Without it, samples and recordings live in the user/ directory.

Restart your MCP client after updating the config.

Your Samples and Recordings

The user/ directory holds your own files. Git ignores everything in it except the READMEs, so nothing you add there gets committed.

Folder

What goes there

user/samples/

Your own WAV/AIFF/MP3 samples, loaded by name (\kick for kick.wav)

user/recordings/

Audio recorded with cc_recording, saved with timestamped filenames

Your samples take priority over the bundled ones in samples/ when names match. The old ~/.claudecollider/samples folder is still searched last. Ask Claude to reload samples after adding files mid-session. To use different folders, set CC_SAMPLES_PATH or CC_RECORDINGS_PATH (see Environment Variables).

MCP Tools

9 MCP tools give Claude control over SuperCollider:

Tool

Description

cc_execute

Execute SuperCollider code (auto-boots on first use)

cc_status

Show status, routing debug, available synths, or available effects

cc_reboot

Reboot the audio server or list audio devices

cc_control

Control playback: stop all sounds, clear everything, or get/set tempo

cc_fx

Effects operations: load, set params, bypass, remove, wire, sidechain, chain

cc_midi

MIDI operations: list devices, connect, play synth, or stop

cc_sample

Sample operations: inspect, load, play, free, or reload directory

cc_recording

Recording operations: start, stop, or check status

cc_output

Hardware output routing: route to outputs, unroute, or show status

Skills

When you live code from inside this repo, Claude has access to a set of skills — packaged instructions that teach it how to perform specific musical tasks well. Some load automatically when relevant; you can also invoke any of them explicitly with a / command.

Skill

Invoke with

What it does

claude-collider

/claude-collider

Core live-coding workflow — synths, patterns, effects, and MCP tool usage

songwriting

/songwriting

Music theory reference for composing better parts (see below)

play-tape

/play-tape

Load and play a saved tape's patterns, effects, and arrangement

record-tape

/record-tape

Capture the current live session as a new tape (.scd file)

arrange-tape

/arrange-tape

Compose a CCArrangement that structures a tape's elements over time

The tape skills (play-tape, record-tape, arrange-tape) are described in more detail in the Tapes section below.

Songwriting

The /songwriting skill is a built-in music theory reference that Claude loads when composing or improving individual parts. It covers:

  • Bass — Bass line theory, patterns, and genre conventions

  • Breakbeats — CCBreakbeat slicing, rearrangement, and genre applications

  • Chords — Voicing, voice leading, progressions, and extensions

  • Melody — Contour, motif development, phrasing, tension and resolution

  • Rhythm — Drum patterns, swing, ghost notes, and genre grooves

  • Scales — Scales, modes, when to use each, and SuperCollider usage

The skill enforces principles like register separation (keeping bass, chords, and melody in distinct octave ranges), complementary rhythms (if one part is on-beat, another syncopates), and repetition with variation. Ask Claude to use it when you want more musically intentional results:

  • "Use the songwriting skill to write a better bass line for this tape"

  • "The melody feels flat — can you improve it?"

Tapes

Tapes are Claude Collider's session format — a single .scd file that captures a complete musical idea. The tapes/ directory contains saved sessions you can play back or use as starting points.

A tape (tapes/<name>.scd) has three parts:

  • Header comment — A /* ... */ block of Markdown docs: tempo, key, element descriptions, effects, arrangement overview, and musical notes.

  • Definitions — SuperCollider code defining all Pdefs, Ndefs, effects, and routing. Elements are defined but not played — running the file never starts playback.

  • Arrangement (optional) — ~arrangement = CCArrangement([...]), which orchestrates when elements enter and exit across sections. Start it with ~arrangement.play.

Playing a Tape

Ask Claude to play a tape by name:

  • "Play the chopped-break tape"

  • "Load up floor-burner"

  • "Play night-drive in jam mode"

There are two playback modes:

  • Arrangement mode (default if the tape defines ~arrangement) — Loads the tape's elements and effects, then runs the arrangement which brings elements in and out over time with section transitions.

  • Jam mode — Loads everything and starts all elements at once. Good for improvising on top of an existing tape.

Recording a Tape

After a live session, ask Claude to save it:

  • "Record this session as a tape called midnight-groove"

  • "Save what we've been playing as a tape"

Claude captures the current tempo, patterns, effects, and routing into a new .scd file in tapes/.

Arranging a Tape

You can also ask Claude to compose an arrangement for an existing tape:

  • "Arrange the floor-burner tape"

  • "Write an arrangement for night-drive with a long build"

This adds an ~arrangement block to the end of the tape — a CCArrangement that structures the tape's elements into intro, build, drop, break, and outro sections.

Debug Mode

Enable debug logging:

DEBUG=claude-collider node dist/index.js

Logs are written to /tmp/claude-collider.log.

Environment Variables

Variable

Default

Description

SCLANG_PATH

Auto-detected

Path to sclang executable

SC_BOOT_TIMEOUT

10000

Boot timeout in ms

SC_EXEC_TIMEOUT

2000

Execution timeout in ms

CC_SAMPLES_PATH

user/samples:samples

Directory for audio samples

CC_RECORDINGS_PATH

user/recordings

Directory for recorded audio

DEBUG

-

Set to claude-collider for debug logs

License

MIT

Related MCP Connectors

Related MCP Servers