Skip to main content
Glama
AJBogo9

supercollider-mcp

by AJBogo9

supercollider-mcp

An MCP server that connects Claude Code to SuperCollider, enabling AI-driven music composition with both real-time playback and non-realtime (NRT) audio rendering at 50-150x realtime speed.

Why SuperCollider?

Sonic Pi is great for live coding, but it renders audio in realtime only -- a 5-minute piece takes 5 minutes to produce. SuperCollider's NRT mode renders audio from a score as fast as your CPU allows, typically 50-150x realtime. A 5-minute piece renders in 2-4 seconds.

This server gives Claude both modes:

  • Real-time: compose interactively, hear results immediately

  • NRT: render a finished piece to WAV without waiting

Related MCP server: SuperCollider MCP Server

Requirements

  • Linux (tested on Ubuntu 24.04)

  • supercollider-server package (scsynth 3.13+)

  • PipeWire with JACK compatibility (pw-jack)

  • Python 3.11+

Install SuperCollider server only (no GUI needed):

sudo apt install supercollider-server

Create the pw-scsynth wrapper (routes scsynth through PipeWire/JACK):

cat > ~/.local/bin/pw-scsynth << 'EOF'
#!/bin/bash
exec pw-jack scsynth "$@"
EOF
chmod +x ~/.local/bin/pw-scsynth

Installation

git clone https://github.com/AJBogo9/supercollider-mcp
cd supercollider-mcp
python3 -m venv .venv
.venv/bin/pip install -e .

MCP configuration

Add to your project's .mcp.json:

{
  "mcpServers": {
    "supercollider": {
      "command": "/home/bogo/Documents/personal/supercollider-mcp/.venv/bin/python",
      "args": ["-m", "sc_mcp.server"],
      "cwd": "/home/bogo/Documents/personal/supercollider-mcp"
    }
  }
}

Tools

Tool

Description

sc_boot

Boot scsynth (auto-called by sc_play)

sc_ping

Check server status

sc_quit

Shut down scsynth

sc_play(code)

Run Python/supriya code on the live server

sc_stop

Stop all sounds, signal song threads to exit

sc_log

Read scsynth output and exec errors

sc_render(code, duration, output_path)

NRT render to WAV

save_song / load_song / list_songs

Song library

save_pattern / load_pattern / list_patterns

Pattern snippets

SynthDef library

Six built-in SynthDefs available in every sc_play call:

  • ambient_pad -- warm slow-attack pad, good for chords

  • bass_drone -- dark low-pass sawtooth sub-bass

  • pluck_tone -- Karplus-Strong plucked string

  • noise_wind -- band-pass filtered noise (wind, breath)

  • choir_wash -- formant-filtered pink noise (choir approximation)

  • sample_one_shot -- one-shot buffer player for audio files

NRT example

sc_render("""
import random
# Simple ambient chord progression
chords = [[293, 369, 440], [247, 311, 392], [261, 329, 415]]
for i, freqs in enumerate(chords):
    for freq in freqs:
        with score.at(i * 6.0):
            s = score.add_synth(ambient_pad, freq=freq, amp=0.25,
                                attack=2.0, sustain=3.0, release=2.0)
        with score.at(i * 6.0 + 6.0):
            score.free_node(s)
with score.at(duration):
    score.do_nothing()
""", duration=20.0, output_path="/tmp/ambient.wav")

Renders 20 seconds of audio in under 0.1 seconds.

Real-time example

sc_play("""
import threading, random, time

BEAT = 60.0 / 90.0

def bass_loop():
    while not stop.is_set():
        with server.at():
            server.add_synth(bass_drone, freq=55, amp=0.4, attack=1.0, sustain=2.0, release=1.0)
        stop.wait(4 * BEAT)

def melody_loop():
    scale = [440, 494, 554, 587, 659]
    while not stop.is_set():
        with server.at():
            server.add_synth(pluck_tone, freq=random.choice(scale), amp=0.3, decay=2.0)
        stop.wait(random.uniform(0.5, 2.0))

for fn in [bass_loop, melody_loop]:
    threading.Thread(target=fn, daemon=True).start()
""")
# Stop with: sc_stop()

Demo: aurora borealis

The songs/aurora_borealis_sc/v1.py file is a full port of the aurora borealis ambient track (originally composed in Sonic Pi) using SuperCollider. 12 concurrent generative loops, D Lydian harmony, Markov chain chord progressions, real owl and wolf samples.

Related MCP Connectors

Related MCP Servers

  • A
    license
    C
    quality
    D
    maintenance
    Connects Claude AI to Ableton Live through the Model Context Protocol, enabling prompt-assisted music production with track creation, instrument loading, clip editing, and session control. Allows users to create complete musical arrangements by describing what they want in natural language.
    37
    3
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    Enables 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.
    11
    1
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables natural language control over Ableton Live for generating musical patterns, melodies, and full song arrangements. It also provides tools for sample searching and mixing assistance through an OSC-based connection with Claude Desktop.
    1
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Connects Claude AI to Ableton Live via the Model Context Protocol, enabling prompt-assisted music production, track and clip manipulation, and session control.
    16
    MIT