🎵 这是一个基于 Strudel.cc 的、可用于生产环境的 MCP 服务器,专为人工智能音乐生成而设计。它能让 Claude 完全控制 Strudel.cc,实现人工智能辅助音乐生成、实时编码和算法作曲等功能。
这是一个经过全面测试的模型上下文协议(MCP)服务器,可让 Claude 完全控制 Strudel.cc,用于人工智能辅助音乐生成、实时编码和算法作曲。所有功能均已通过与真实 Strudel.cc 的交互验证。
npm install -g @williamzujkowski/strudel-mcp-server
# 克隆仓库
git clone https://github.com/williamzujkowski/strudel-mcp-server.git
cd strudel-mcp-server
# 安装依赖
npm install
# 安装用于浏览器自动化的 Chromium
npx playwright install chromium
# 构建项目
npm run build
# 如果是全局安装
claude mcp add strudel strudel-mcp
# 如果是从源代码构建
claude mcp add strudel node /path/to/strudel-mcp-server/dist/index.js
claude chat
然后向 Claude 提问:
| 工具 | 描述 | 示例 |
|---|---|---|
init |
在浏览器中初始化 Strudel | "初始化 Strudel" |
write |
将模式写入编辑器 | "写入模式:s('bd*4')" |
play |
开始播放 | "播放模式" |
stop |
停止播放 | "停止播放" |
clear |
清空编辑器 | "清空编辑器" |
get_pattern |
获取当前模式 | "显示当前模式" |
append |
添加到模式 | "添加镲片" |
insert |
在指定行插入 | "在第 2 行插入" |
replace |
替换文本 | "将 bd 替换为 sn" |
pause |
暂停播放 | "暂停" |
| 工具 | 描述 | 风格/选项 |
|---|---|---|
generate_pattern |
完成模式 | Techno、House、Drum & Bass、Ambient、Trap、Jungle |
generate_drums |
鼓模式 | 所有风格 + 复杂度(0 - 1) |
generate_bassline |
贝斯模式 | Techno、House、Drum & Bass、Acid、Dub、Funk、Jazz |
generate_melody |
旋律线 | 任何音阶,自定义长度 |
generate_variation |
模式变体 | 微妙、中等、极端、故障 |
generate_fill |
鼓填充 | 所有风格,1 - 4 小节 |
transpose |
移调 | ±12 半音 |
reverse |
反转模式 | - |
stretch |
时间拉伸 | 因子 0.1 - 10 |
humanize |
添加节奏变化 | 程度 0 - 1 |
| 工具 | 描述 | 选项 |
|---|---|---|
generate_scale |
生成音阶 | 大调、小调、调式、五声音阶、蓝调音阶 |
generate_chord_progression |
和弦进行 | 流行、爵士、蓝调、摇滚、民谣 |
generate_euclidean |
欧几里得节奏 | 击打次数/步数/声音 |
generate_polyrhythm |
复节奏 | 多个模式 |
apply_scale |
将音阶应用于音符 | 任何音阶 |
quantize |
量化到网格 | 1/4、1/8、1/16 等 |
| 工具 | 描述 | 返回值 |
|---|---|---|
analyze |
音频分析 | 频率数据、播放状态 |
analyze_spectrum |
FFT 分析 | 频谱数据 |
add_effect |
添加音频效果 | 效果链 |
set_tempo |
设置 BPM | 60 - 200 BPM |
add_swing |
添加摇摆感 | 程度 0 - 1 |
| 工具 | 描述 |
|---|---|
save |
保存带有标签的模式 |
load |
加载已保存的模式 |
list |
列出所有模式 |
undo |
撤销上一个操作 |
redo |
重做操作 |
你:初始化 Strudel 并创建一个 130 BPM 的 Techno 曲目
Claude:我将为你创建一个 Techno 曲目。
[初始化 Strudel]
[生成包含鼓、贝斯和旋律的模式]
[开始播放]
你:生成 F 大调的 ii-V-I 进行并播放
Claude:[生成:"Gm7" "C7" "Fmaj7"]
[创建带有和声的和弦模式]
[播放进行]
你:分析当前正在播放的内容
Claude:音频分析显示:
- 强烈的贝斯存在感(180/255)
- 峰值频率:120 Hz(底鼓)
- 模式正在积极播放
- 频率分布均衡
所有工具均已通过与真实 Strudel.cc 的交互测试:
# 运行集成测试
npm run test:integration
# 运行浏览器测试
node tests/strudel-integration.js
# 测试结果:100% 通过(19/19 个测试)
请参阅 BROWSER_TEST_RESULTS.md 以获取详细的测试结果。
{
"headless": false, // 设置为 true 以在后台运行
"strudel_url": "https://strudel.cc/",
"patterns_dir": "./patterns",
"audio_analysis": {
"fft_size": 2048,
"smoothing": 0.8
}
}
strudel-mcp-server/
├── src/
│ ├── server/ # MCP 服务器实现
│ │ └── EnhancedMCPServerFixed.ts
│ ├── services/ # 音乐生成
│ │ ├── MusicTheory.ts # 音阶、和弦、理论
│ │ └── PatternGenerator.ts # 模式创建
│ ├── StrudelController.ts # 浏览器自动化
│ ├── AudioAnalyzer.ts # Web Audio API 集成
│ └── PatternStore.ts # 模式持久化
├── tests/ # 全面的测试套件
│ └── strudel-integration.js # 真实浏览器测试
└── patterns/ # 保存的模式
setcpm(130)
stack(
s("bd*4").gain(0.9),
s("~ cp ~ cp").room(0.2),
s("hh*16").gain(0.4).pan(sine.range(-0.5, 0.5)),
note("c2 c2 eb2 c2").s("sawtooth").cutoff(800)
).swing(0.05)
setcpm(174)
stack(
s("bd ~ ~ [bd bd] ~ ~ bd ~, ~ ~ sn:3 ~ ~ sn:3 ~ ~").fast(2),
s("hh*16").gain(0.5),
note("e1 ~ ~ e2 ~ e1 ~ ~").s("sine:2").lpf(200)
)
// F 大调的爵士 ii-V-I
stack(
note("Gm7" "C7" "Fmaj7").struct("1 ~ ~ ~").s("piano"),
note("g2 c2 f2").s("sine").gain(0.7)
)
# 构建镜像
docker build -t strudel-mcp .
# 运行容器
docker run -it --rm strudel-mcp
# 或者使用 docker-compose
docker-compose up
# 开发模式,支持热重载
npm run dev
# 构建 TypeScript
npm run build
# 运行测试
npm test
# 验证 MCP 服务器
npm run validate
# 安装 Chromium
npx playwright install chromium
欢迎贡献代码!请遵循以下步骤:
本项目采用 MIT 许可证,请参阅 LICENSE 文件以获取详细信息。
v2.2.0 - 已通过与真实 Strudel.cc 的交互全面测试 | 100% 正常工作