Strudel MCP Server
Enables AI assistants to work with Strudel live coding patterns for music creation, including parsing mini notation, generating rhythmic patterns, accessing music theory (scales/chords), and applying pattern transformations.
README
Strudel MCP Server
한국어 | English
An MCP (Model Context Protocol) server that enables LLMs to work with Strudel - a live coding environment for music patterns. This server allows AI assistants to parse, analyze, generate, and transform Strudel patterns.
What is Strudel?
Strudel is a JavaScript port of TidalCycles, a live coding environment for creating music through code. It uses a concise "mini notation" to express complex rhythmic patterns:
s("bd sd [hh hh] cp") // kick, snare, two hi-hats, clap
What is MCP?
Model Context Protocol (MCP) is an open protocol that enables AI assistants to interact with external tools and services. This server exposes Strudel's pattern engine to any MCP-compatible client.
Features
- Pattern Analysis - Parse mini notation, query pattern events, validate syntax
- Music Theory - Access scales, chords, and voicings
- Code Generation - Generate patterns by style (drums, bass, melody, chords, ambient)
- Pattern Transformation - Apply transformations like
fast,slow,rev,jux - Reference - List available functions, sounds, and samples
Installation
Prerequisites
- Node.js 18 or higher
- npm or pnpm
Setup
# Clone the repository
git clone https://github.com/YOUR_USERNAME/strudel-mcp.git
cd strudel-mcp
# Install dependencies
npm install
# Build the project
npm run build
Usage
With Claude Desktop
Add to your Claude Desktop configuration:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"strudel": {
"command": "node",
"args": ["/absolute/path/to/strudel-mcp/dist/index.js"]
}
}
}
Then restart Claude Desktop.
With Claude Code
claude mcp add strudel node /absolute/path/to/strudel-mcp/dist/index.js
With MCP Inspector
Test the server interactively:
npm run inspect
Available Tools
Pattern Analysis
| Tool | Description | Example Input |
|---|---|---|
strudel_parse_mini |
Parse mini notation to AST | {"notation": "bd sd [hh hh] cp"} |
strudel_query_pattern |
Query events in time range | {"code": "bd sd", "startCycle": 0, "endCycle": 2} |
strudel_validate_code |
Validate syntax | {"code": "bd sd [hh hh]"} |
strudel_explain_pattern |
Human-readable explanation | {"notation": "bd(3,8)"} |
Music Theory
| Tool | Description | Example Input |
|---|---|---|
strudel_list_scales |
List available scales | {"filter": "minor"} |
strudel_get_scale |
Get notes in a scale | {"scale": "pentatonic minor", "root": "A"} |
strudel_list_chords |
List chord types | {} |
strudel_get_voicing |
Get chord voicing | {"chord": "Cmaj7"} |
Code Generation
| Tool | Description | Example Input |
|---|---|---|
strudel_generate_pattern |
Generate pattern by style | {"style": "drums", "complexity": "medium"} |
strudel_transform_pattern |
Apply transformations | {"code": "bd sd", "transformations": ["fast(2)", "rev"]} |
Reference
| Tool | Description | Example Input |
|---|---|---|
strudel_list_functions |
List pattern functions | {"category": "timing"} |
strudel_list_sounds |
List built-in sounds | {"category": "drums"} |
Examples
Parse a Pattern
User: Parse the pattern "bd sd [hh hh] cp"
Tool: strudel_parse_mini
Input: {"notation": "bd sd [hh hh] cp"}
Output:
{
"notation": "bd sd [hh hh] cp",
"eventCount": 5,
"events": [
{"value": "bd", "whole": "0 -> 0.25"},
{"value": "sd", "whole": "0.25 -> 0.5"},
{"value": "hh", "whole": "0.5 -> 0.625"},
{"value": "hh", "whole": "0.625 -> 0.75"},
{"value": "cp", "whole": "0.75 -> 1"}
]
}
Generate a Drum Pattern
User: Generate a complex drum pattern
Tool: strudel_generate_pattern
Input: {"style": "drums", "complexity": "complex"}
Output:
{
"style": "drums",
"complexity": "complex",
"code": "s(\"bd(3,8), sd(2,8,1), hh*16?0.3, cp(1,4,2)\")",
"explanation": "Complex polyrhythmic drums using Euclidean patterns"
}
Get Scale Notes
User: What notes are in A minor pentatonic?
Tool: strudel_get_scale
Input: {"scale": "pentatonic minor", "root": "A"}
Output:
{
"name": "A pentatonic minor",
"notes": ["A", "C", "D", "E", "G"],
"usage": "n(\"0 1 2 3 4\").scale(\"A:pentatonic_minor\")"
}
Development
# Build
npm run build
# Run directly
npm start
# Watch mode (rebuild on changes)
npm run dev
# Test with MCP Inspector
npm run inspect
Project Structure
strudel-mcp/
├── src/
│ ├── index.ts # Main server with all tools
│ └── types.d.ts # TypeScript declarations for Strudel
├── dist/ # Compiled output
├── package.json
├── tsconfig.json
└── README.md
Dependencies
- @modelcontextprotocol/sdk - MCP SDK
- @strudel/core - Strudel pattern engine
- @strudel/mini - Mini notation parser
- @strudel/tonal - Music theory functions
- tonal - Music theory library
- zod - Schema validation
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
MIT License - see LICENSE for details.
Links
- Strudel - Live coding environment
- Strudel Documentation - Learn Strudel
- TidalCycles - Original Haskell implementation
- MCP Specification - Model Context Protocol
Acknowledgments
- Alex McLean and Felix Roos - Strudel creators
- Anthropic - MCP specification
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.