Enables AI-powered live coding music generation through Strudel.cc, a web-based environment inspired by TidalCycles, providing tools for pattern generation, music theory operations, audio analysis, and real-time performance across multiple genres including techno, house, drum & bass, ambient, and jazz.
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., "@Filopastrygenerate a techno pattern with a driving bassline"
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.
Filopastry
AI-powered live coding music generation through Strudel.cc
An MCP (Model Context Protocol) server that enables AI agents to generate, manipulate, and perform algorithmic music using Strudel.cc — a web-based live coding environment inspired by TidalCycles.
Overview
Filopastry bridges the gap between AI and live-coded music. It provides 46+ tools for pattern generation, music theory operations, audio analysis, and AI-powered composition — all accessible through the Model Context Protocol.
The server automates a headless Chromium browser running Strudel.cc, allowing AI agents to write patterns, control playback, analyze audio in real-time, and generate music across multiple genres.
Key Capabilities
Pattern Generation: Create complete tracks in techno, house, drum & bass, ambient, trap, jungle, jazz, and experimental styles
Music Theory Engine: Generate scales, chord progressions, Euclidean rhythms, and polyrhythms
Real-time Audio Analysis: FFT spectrum analysis, tempo detection, key detection
AI Integration: Natural language pattern generation via DeepSeek API (optional)
Session Management: Save, load, and organize patterns with tags
Undo/Redo: Full editing history for pattern manipulation
Prerequisites
Node.js 18.0.0 or higher
npm 9.0.0 or higher
Chromium (installed automatically by Playwright)
Installation
# Clone the repository
git clone https://github.com/youwenshao/filopastry.git
cd filopastry
# Install dependencies
npm install
# Install Playwright browsers
npx playwright install chromium
# Build the project
npm run buildConfiguration
config.json
The server reads configuration from config.json in the project root:
{
"headless": false,
"strudel_url": "https://strudel.cc/",
"patterns_dir": "./patterns",
"audio_analysis": {
"fft_size": 2048,
"smoothing": 0.8
},
"deepseek": {
"model": "deepseek-chat",
"max_tokens": 2048,
"temperature": 0.7,
"base_url": "https://api.deepseek.com"
}
}Option | Description | Default |
| Run browser without GUI (set |
|
| Strudel.cc instance URL |
|
| Directory for saved patterns |
|
| FFT window size for audio analysis |
|
| Spectrum smoothing factor (0-1) |
|
DeepSeek API (Optional)
For AI-powered pattern generation, set the DEEPSEEK_API_KEY environment variable:
export DEEPSEEK_API_KEY="your-api-key-here"Get an API key from the DeepSeek Platform.
When the API key is not configured, AI tools fall back to static pattern generation using the built-in PatternGenerator.
Usage
Running the MCP Server
# Start the server
npm start
# Or run in development mode with hot reload
npm run devValidating the Server
Test that the MCP protocol is working:
npm run validateThis sends a tools/list request and displays the available tools.
Integration with Cursor IDE
Add Filopastry to your Cursor MCP configuration:
macOS/Linux: ~/.cursor/mcp.json
Windows: %APPDATA%\Cursor\mcp.json
{
"mcpServers": {
"filopastry": {
"command": "node",
"args": ["/path/to/filopastry/dist/index.js"],
"env": {
"DEEPSEEK_API_KEY": "your-api-key-here"
}
}
}
}Restart Cursor after updating the configuration.
Tool Reference
Filopastry provides 46+ tools organized into categories:
Core Control (10 tools)
Tool | Description |
| Initialize Strudel in browser |
| Write pattern to editor |
| Append code to current pattern |
| Insert code at specific line |
| Replace pattern section |
| Start playing pattern |
| Pause playback |
| Stop playback |
| Clear the editor |
| Get current pattern code |
Pattern Generation (10 tools)
Tool | Description |
| Generate complete pattern from style (techno, house, dnb, ambient, trap, jungle, jazz) |
| Generate drum pattern |
| Generate bassline |
| Generate melody from scale |
| Generate scale notes |
| Generate chord progression |
| Generate Euclidean rhythm |
| Generate polyrhythm |
| Generate drum fill |
| Create pattern variations |
Pattern Manipulation (6 tools)
Tool | Description |
| Transpose notes by semitones |
| Reverse pattern |
| Time stretch pattern |
| Quantize to grid |
| Add human timing variation |
| Apply scale to notes |
Effects & Processing (5 tools)
Tool | Description |
| Add effect to pattern |
| Remove effect |
| Set BPM |
| Add swing to pattern |
| Validate pattern with runtime error checking |
Audio Analysis (5 tools)
Tool | Description |
| Complete audio analysis |
| FFT spectrum analysis |
| Rhythm analysis |
| BPM detection |
| Key detection |
Session Management (5 tools)
Tool | Description |
| Save pattern with metadata |
| Load saved pattern |
| List saved patterns |
| Undo last action |
| Redo action |
AI-Powered Tools (7 tools)
Requires DEEPSEEK_API_KEY environment variable for full functionality.
Tool | Description |
| Generate pattern from natural language description |
| Enhance or modify current pattern |
| Get explanation of what current pattern does |
| Get style detection, complexity assessment, suggestions |
| Generate AI-suggested variations |
| Check if DeepSeek AI is configured |
| Test DeepSeek API connection |
Performance Monitoring (2 tools)
Tool | Description |
| Get performance metrics and bottlenecks |
| Get current memory usage statistics |
Architecture
┌─────────────────────────────────────────────────────────────┐
│ MCP Protocol Layer │
│ EnhancedMCPServerFixed (46+ tools) │
└─────────────────────────────────────────────────────────────┘
│
┌─────────────────────┼─────────────────────┐
▼ ▼ ▼
┌───────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ MusicTheory │ │PatternGenerator │ │ DeepSeekService │
│ (scales, │ │ (genres, drums │ │ (AI patterns, │
│ chords) │ │ bass, melody) │ │ enhancement) │
└───────────────┘ └─────────────────┘ └─────────────────┘
│
┌─────────────────────┼─────────────────────┐
▼ ▼ ▼
┌───────────────┐ ┌─────────────────┐ ┌─────────────────┐
│StrudelController│ │ AudioAnalyzer │ │ PatternStore │
│ (Playwright, │ │ (FFT, tempo, │ │ (JSON storage, │
│ browser) │ │ key detect) │ │ tags, cache) │
└───────────────┘ └─────────────────┘ └─────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Strudel.cc │
│ (Web Audio, Live Coding) │
└─────────────────────────────────────────────────────────────┘Component Overview
Component | Purpose |
EnhancedMCPServerFixed | MCP protocol handling, tool registration and routing |
StrudelController | Browser automation via Playwright, editor manipulation |
AudioAnalyzer | Real-time FFT analysis, tempo/key detection algorithms |
MusicTheory | Scale generation, chord progressions, music theory calculations |
PatternGenerator | Genre-specific pattern generation, Euclidean rhythms |
DeepSeekService | AI integration for natural language pattern generation |
PatternStore | JSON-based pattern persistence with tagging |
Troubleshooting
Browser won't launch
# Install Playwright browsers
npx playwright install chromiumBuild fails
# Clean and rebuild
npm run clean
npm run build"Browser not initialized" errors
Always run the init tool before using browser-dependent tools:
Use the init tool first, then generate_pattern, then play.Audio analysis not working
Ensure audio is actually playing (
playtool)Wait a moment for the audio context to connect
Try
analyzetool to verify connection
DeepSeek API errors
Verify API key is set: check
ai_statustool outputTest connection: use
ai_test_connectiontoolCheck API key validity at DeepSeek Platform
Pattern validation errors
The server includes safety checks for dangerous patterns (extreme gain values, eval blocks). Use validate_pattern_runtime to test patterns before playing.
Performance issues
Use performance_report to identify bottlenecks. Common optimizations:
Set
headless: truein config.json for faster operationPatterns are cached with 100ms TTL to reduce browser calls
Example Patterns
The patterns/examples/ directory contains genre-specific pattern templates:
patterns/examples/
├── ambient/
│ ├── dark-ambient.json
│ └── drone.json
├── dnb/
│ ├── liquid-dnb.json
│ └── neurofunk.json
├── house/
│ ├── deep-house.json
│ └── tech-house.json
├── jazz/
│ ├── bebop.json
│ └── modal-jazz.json
├── jungle/
│ ├── classic-jungle.json
│ └── ragga-jungle.json
├── techno/
│ ├── hard-techno.json
│ └── minimal-techno.json
└── trap/
├── cloud-trap.json
└── modern-trap.jsonPerformance
Operation | Typical Latency |
Browser initialization | 1.5-2s |
Pattern write | 50-80ms |
Pattern read (cached) | 10-15ms |
Play/Stop | 100-150ms |
Audio analysis | 10-15ms |
Tempo detection | <100ms |
Key detection | <100ms |
AI pattern generation | 2-5s (network dependent) |
Author
Youwen Shao
GitHub: @youwenshao
Email: youwenshao@gmail.com
Acknowledgments
Strudel.cc — The live coding music platform that makes this possible
TidalCycles — The inspiration behind Strudel's pattern language
Model Context Protocol — The protocol enabling AI agent integration
DeepSeek — AI capabilities for natural language pattern generation