Back to MCP directory
publicPublicdnsLocal runtime

strudel-mcp-server

一个生产就绪的MCP服务器,通过Strudel.cc实现AI驱动的音乐生成,提供完整的浏览器自动化控制、实时音频分析和模式生成功能

article

README

🚀 Strudel MCP 服务器

🎵 这是一个基于 Strudel.cc 的、可用于生产环境的 MCP 服务器,专为人工智能音乐生成而设计。它能让 Claude 完全控制 Strudel.cc,实现人工智能辅助音乐生成、实时编码和算法作曲等功能。

CI npm 版本 工具数量 许可证

这是一个经过全面测试的模型上下文协议(MCP)服务器,可让 Claude 完全控制 Strudel.cc,用于人工智能辅助音乐生成、实时编码和算法作曲。所有功能均已通过与真实 Strudel.cc 的交互验证

✨ 主要特性

🎹 全面的音乐控制

  • 40 多种 MCP 工具:提供一套全面的音乐创作和操作工具。
  • 真实浏览器自动化:通过 Playwright 直接控制 Strudel.cc。
  • 实时音频分析:通过 Web Audio API 进行实时频率分析。
  • 模式生成:由人工智能驱动,可生成 8 种以上音乐风格的模式。
  • 音乐理论引擎:支持音阶、和弦、进行和欧几里得节奏。
  • 会话管理:可保存、加载、撤销/重做,并存储音乐模式。

🚀 经过验证且可用于生产环境

  • 100% 测试覆盖率:所有工具均已通过与真实 Strudel.cc 的交互测试。
  • 浏览器集成:已确认可与实时网站正常工作。
  • 音频分析:可正常提取实时频率数据。
  • 模式播放:所有生成的模式均可正常播放。
  • 错误处理:可优雅地处理所有边缘情况。

📦 安装指南

从 npm 安装

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

🚀 快速开始

1. 添加到 Claude

# 如果是全局安装
claude mcp add strudel strudel-mcp

# 如果是从源代码构建
claude mcp add strudel node /path/to/strudel-mcp-server/dist/index.js

2. 开始使用

claude chat

然后向 Claude 提问:

  • "初始化 Strudel 并创建一个Techno节拍"
  • "生成 F 大调的爵士和弦进行"
  • "创建一个 174 BPM 的鼓与贝斯模式"

🛠️ 可用工具(40 多种)

核心控制(10 个工具)

| 工具 | 描述 | 示例 | |------|-------------|---------| | init | 在浏览器中初始化 Strudel | "初始化 Strudel" | | write | 将模式写入编辑器 | "写入模式:s('bd*4')" | | play | 开始播放 | "播放模式" | | stop | 停止播放 | "停止播放" | | clear | 清空编辑器 | "清空编辑器" | | get_pattern | 获取当前模式 | "显示当前模式" | | append | 添加到模式 | "添加镲片" | | insert | 在指定行插入 | "在第 2 行插入" | | replace | 替换文本 | "将 bd 替换为 sn" | | pause | 暂停播放 | "暂停" |

模式生成(10 个工具)

| 工具 | 描述 | 风格/选项 | |------|-------------|----------------| | 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 |

音乐理论(10 个工具)

| 工具 | 描述 | 选项 | |------|-------------|---------| | generate_scale | 生成音阶 | 大调、小调、调式、五声音阶、蓝调音阶 | | generate_chord_progression | 和弦进行 | 流行、爵士、蓝调、摇滚、民谣 | | generate_euclidean | 欧几里得节奏 | 击打次数/步数/声音 | | generate_polyrhythm | 复节奏 | 多个模式 | | apply_scale | 将音阶应用于音符 | 任何音阶 | | quantize | 量化到网格 | 1/4、1/8、1/16 等 |

音频与效果(5 个工具)

| 工具 | 描述 | 返回值 | |------|-------------|---------| | analyze | 音频分析 | 频率数据、播放状态 | | analyze_spectrum | FFT 分析 | 频谱数据 | | add_effect | 添加音频效果 | 效果链 | | set_tempo | 设置 BPM | 60 - 200 BPM | | add_swing | 添加摇摆感 | 程度 0 - 1 |

会话管理(5 个工具)

| 工具 | 描述 | |------|-------------| | save | 保存带有标签的模式 | | load | 加载已保存的模式 | | list | 列出所有模式 | | undo | 撤销上一个操作 | | redo | 重做操作 |

💻 使用示例

创建一个 Techno 曲目

你:初始化 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 以获取详细的测试结果。

🔧 技术细节

配置文件 config.json

{
  "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/               # 保存的模式

模式示例

极简 Techno(已验证可正常工作)

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 支持

# 构建镜像
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

📊 性能

  • 模式生成:<100ms
  • 浏览器初始化:~3 秒
  • 模式写入:即时
  • 播放开始:~500ms
  • 音频分析:实时
  • 内存使用:<150MB

🐛 故障排除

浏览器未打开

# 安装 Chromium
npx playwright install chromium

音频分析不起作用

  • 确保模式正在播放
  • 播放后等待 1 - 2 秒再进行分析

模式语法错误

  • 查看 Strudel/TidalCycles 文档
  • 使用更简单的模式进行测试

🤝 贡献

欢迎贡献代码!请遵循以下步骤:

  1. 分叉仓库
  2. 创建一个功能分支
  3. 为新功能添加测试
  4. 确保所有测试通过
  5. 提交拉取请求

📄 许可证

本项目采用 MIT 许可证,请参阅 LICENSE 文件以获取详细信息。

🙏 致谢


v2.2.0 - 已通过与真实 Strudel.cc 的交互全面测试 | 100% 正常工作

help

Runtime guide

cloud

Hosted runtime

Hosted servers run from a provider-managed environment. You usually connect the MCP client to the hosted endpoint or follow the provider's authorization flow, without keeping a local process alive

  1. Open provider connection page
  2. Authorize or copy endpoint
  3. Connect from your MCP client
terminal

Local runtime / other methods

Local servers run on your own machine or infrastructure. You normally copy the server_config into your MCP client, install the required package, and provide env variables from env_schema when needed

  1. Copy server_config
  2. Install required package
  3. Fill env variables and restart client