Strudel Live Coding▌

by williamzujkowski
Strudel Live Coding offers real-time music generation in your browser with 40+ tools for pattern creation, theory, and l
Provides direct control over Strudel.cc for live coding music generation through browser automation, offering 40+ tools for pattern creation, music theory operations, genre-specific generators, and real-time audio analysis with session management.
best for
- / Musicians doing AI-assisted live coding
- / Algorithmic composition experiments
- / Music producers exploring generative patterns
- / Educational music theory practice
capabilities
- / Generate live coding music patterns
- / Control browser-based Strudel.cc sessions
- / Apply music theory operations and transformations
- / Create genre-specific music generators
- / Analyze audio patterns in real-time
- / Manage live coding sessions
what it does
Controls Strudel.cc in your browser to generate and manipulate live coding music patterns using AI assistance. Provides 65+ tools for pattern creation, music theory operations, and real-time audio control.
about
Strudel Live Coding is a community-built MCP server published by williamzujkowski that provides AI assistants with tools and capabilities via the Model Context Protocol. Strudel Live Coding offers real-time music generation in your browser with 40+ tools for pattern creation, theory, and l It is categorized under browser automation, other.
how to install
You can install Strudel Live Coding in your AI client of choice. Use the install panel on this page to get one-click setup for Cursor, Claude Desktop, VS Code, and other MCP-compatible clients. This server runs locally on your machine via the stdio transport.
license
MIT
Strudel Live Coding is released under the MIT license. This is a permissive open-source license, meaning you can freely use, modify, and distribute the software.
readme
Strudel MCP Server
<a href="https://glama.ai/mcp/servers/@williamzujkowski/strudel-mcp-server"> <img width="380" height="200" src="https://glama.ai/mcp/servers/@williamzujkowski/strudel-mcp-server/badge" alt="Strudel Server MCP server" /> </a>🎵 Open source MCP server for AI-powered music generation with Strudel.cc
Status: Actively developed | Experimental | Contributions welcome
An experimental Model Context Protocol (MCP) server that enables Claude to control Strudel.cc for AI-assisted music generation, live coding, and algorithmic composition.
Current State: Functional but under active development. Core features work reliably, but expect rough edges. Test coverage is at 78% with 1470 tests passing (1521 total, 51 skipped). See open issues for known limitations.
Table of Contents
- Features
- Installation
- Quick Reference
- Quick Start
- Available Tools
- Usage Examples
- Architecture
- Advanced Usage
- Configuration
- Security
- Troubleshooting
- Development
- Contributing
✨ Features
🎹 Complete Music Control
- 65 MCP Tools: Comprehensive suite for music creation and manipulation
- Real Browser Automation: Direct control of Strudel.cc through Playwright
- Live Audio Analysis: Real-time frequency analysis via Web Audio API
- Pattern Generation: AI-powered creation across 8+ music genres
- Music Theory Engine: Scales, chords, progressions, euclidean rhythms
- Session Management: Save, load, undo/redo with pattern storage
🔧 Testing & Development Status
- ✅ Test Suite: 1470 tests passing (1521 total, 51 skipped)
- ✅ Code Coverage: 78% statement coverage (goal: 80%)
- ✅ Browser Integration: Works with live Strudel.cc website
- ✅ Audio Analysis: Real-time FFT analysis functional
- ✅ Pattern Generation: Core music generation features working
- ✅ OIDC Publishing: Secure npm publishing with provenance attestation
Not Production-Ready: This is experimental software under active development. Use for exploration and experimentation. Expect breaking changes, bugs, and incomplete features. See CONTRIBUTING.md to help improve it.
🎼 Example Patterns
Explore 17 curated example patterns across 10 genres in patterns/examples/:
- Techno: Hard techno, minimal techno
- House: Deep house, tech house
- Drum & Bass: Liquid, neurofunk
- Ambient: Dark ambient, drone
- Trap: Modern trap, cloud trap
- Jungle: Classic jungle, ragga jungle
- Jazz: Bebop, modal jazz
- Intelligent DnB: Atmospheric, liquid, LTJ Bukem style
- Trip Hop: Portishead, Massive Attack, Flying Lotus style
- Boom Bap: DJ Premier, Alchemist, golden era hip hop
Each example includes pattern code, BPM, key, and description. See patterns/examples/README.md for details.
📦 Installation
Prerequisites
| Requirement | Version | Notes |
|---|---|---|
| Node.js | 18.x or 20.x | LTS versions recommended |
| npm | 9+ | Comes with Node.js |
| Chromium | Latest | Auto-installed by Playwright |
| Audio output | Any | Required for playback (speakers/headphones) |
Optional: Docker for containerized deployment.
From npm
npm install -g @williamzujkowski/strudel-mcp-server
# Install browser (required once)
npx playwright install chromium
From Source
# Clone repository
git clone https://github.com/williamzujkowski/strudel-mcp-server.git
cd strudel-mcp-server
# Install dependencies
npm install
# Install Chromium for browser automation
npx playwright install chromium
# Build the project
npm run build
🚀 Quick Reference
Common commands for immediate use:
| Action | Command |
|---|---|
| Initialize browser | init |
| Create techno beat | generate_pattern with style: "techno" |
| Play pattern | play |
| Stop playback | stop |
| Get current pattern | get_pattern |
| Analyze audio | analyze |
| Save pattern | save with name: "my-pattern" |
| Undo last change | undo |
One-shot workflow:
compose with style: "dnb", key: "Am", bpm: 174, auto_play: true
🎯 Quick Start
1. Add to Claude
# If installed globally
claude mcp add strudel strudel-mcp
# If built from source
claude mcp add strudel node /path/to/strudel-mcp-server/dist/index.js
2. Start Using
claude chat
Then ask Claude:
- "Initialize Strudel and create a techno beat"
- "Generate a jazz chord progression in F major"
- "Create a drum & bass pattern at 174 BPM"
🛠️ Available Tools (65)
Core Control (10 tools)
| Tool | Description | Example |
|---|---|---|
init | Initialize Strudel in browser | "Initialize Strudel" |
write | Write pattern to editor | "Write pattern: s('bd*4')" |
play | Start playback | "Play the pattern" |
stop | Stop playback | "Stop playing" |
clear | Clear editor | "Clear the editor" |
get_pattern | Get current pattern | "Show current pattern" |
append | Add to pattern | "Add hi-hats" |
insert | Insert at line | "Insert at line 2" |
replace | Replace text | "Replace bd with sn" |
pause | Pause playback | "Pause" |
Pattern Generation & Manipulation (10 tools)
| Tool | Description | Options |
|---|---|---|
generate_pattern | Complete patterns | techno, house, dnb, ambient, trap, jungle, jazz, intelligent_dnb, trip_hop, boom_bap |
generate_drums | Drum patterns | All styles + complexity (0-1) |
generate_bassline | Bass patterns | techno, house, dnb, acid, dub, funk, jazz, intelligent_dnb, trip_hop, boom_bap |
generate_melody | Melodic lines | Any scale, custom length |
generate_variation | Pattern variations | subtle, moderate, extreme, glitch |
transpose | Transpose notes | ±12 semitones |
reverse | Reverse pattern | - |
stretch | Time stretch | Factor 0.1-10 |
quantize | Quantize to grid | 1/4, 1/8, 1/16, etc. |
humanize | Add timing variation | Amount 0-1 |
Music Theory (6 tools)
| Tool | Description | Options |
|---|---|---|
generate_scale | Generate scales | major, minor, modes, pentatonic, blues |
generate_chord_progression | Chord progressions | pop, jazz, blues, rock, folk |
generate_euclidean | Euclidean rhythms | hits/steps/sound |
generate_polyrhythm | Polyrhythms | Multiple patterns |
generate_fill | Generate drum fills | All styles, 1-4 bars |
apply_scale | Apply scale to notes | Any scale |
Effects (4 tools)
| Tool | Description |
|---|---|
add_effect | Add audio effect (reverb, delay, etc.) |
remove_effect | Remove an effect from the chain |
set_tempo | Set BPM (60-200) |
add_swing | Add swing feel (0-1 amount) |
Session Management (5 tools)
| Tool | Description |
|---|---|
save | Save pattern with tags |
load | Load saved pattern |
list | List all patterns |
undo | Undo last action |
redo | Redo action |
Pattern History (3 tools)
| Tool | Description |
|---|---|
list_history | Browse pattern history with timestamps and previews |
restore_history | Restore a previous pattern by ID |
compare_patterns | Compare two patterns showing line-by-line differences |
Audio Analysis (6 tools)
| Tool | Description |
|---|---|
analyze | Basic audio analysis (frequency, playing state) |
analyze_spectrum | FFT spectral analysis |
analyze_rhythm | Rhythm complexity analysis |
detect_tempo | BPM detection |
detect_key | Musical key detection |
validate_pattern_runtime | Validate pattern with browser error checking |
UX & Browser Control (6 tools)
| Tool | Description |
|---|---|
compose | One-shot pattern generation with auto-play |
status | Get current browser/playback state |
diagnostics | Detailed system diagnostics |
show_browser | Bring browser window to foreground |
screenshot | Capture browser screenshot |
show_errors | Display captured console errors |
Performance (2 tools)
| Tool | Description |
|---|---|
performance_report | Timing metrics and bottleneck analysis |
memory_usage | Memory consumption statistics |
AI Feedback (1 tool)
| Tool | Description | Options |
|---|---|---|
get_pattern_feedback | AI-powered creative feedback via Gemini | includeAudio: analyze audio (default: false), style: hint for context |
Note: Requires
GEMINI_API_KEYenvironment variable. Returns pattern complexity, estimated style, strengths, and suggestions.
🎵 Usage Examples
Basic Pattern Creation
Create a Simple Beat
You: Initialize Strudel and create a simple techno beat
Claude: [Initializes browser]
[Generates and writes pattern]
[Starts playback]
Pattern created:
setcpm(130)
stack(
s("bd*4"),
s("~ cp ~ cp"),
s("hh*8").gain(0.4)
).gain(0.8)
Generate a Bassline
You: Add a techno bassline in C
Claude: [Generates bassline]
[Appends to current pattern]
Added: note("c2 c2 c2 c2").s("sawtooth").cutoff(800)