live-coding-music-mcp
让 Claude 通过 MCP 协议驱动 Strudel.cc 浏览器实时生成 AI 辅助音乐模式
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
让 Claude 通过 MCP 协议驱动 Strudel.cc 浏览器实时生成 AI 辅助音乐模式
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下这样的场景:你在深夜的工作室里,面对空白的时间轴,不知道该从哪里下笔写一段 techno 节拍。传统方式你需要翻找采样包、调试合成器参数,花半小时才能找到感觉。而现在,你只需要对 Claude 说一句「来一段 128 BPM 的 minimal techno,带点工业感的 hi-hat」,几秒钟后,Strudel.cc 的编辑器里就出现了一段完整的代码,自动播放出来——这就是 live-coding-music-mcp 正在做的事。
Live Coding(实时编码)是一种颠覆传统的音乐创作方式:创作者不是在 DAW 里拖拽 MIDI 块,而是直接在代码编辑器里写代码,实时生成音乐。这种方式最早由 TidalCycles 项目在 2010 年代推广开来,其核心理念是「代码即音乐,音乐即代码」。程序员可以用自己熟悉的工具(文本编辑器、命令行)来作曲,甚至可以在演出中当众写代码——观众能看到屏幕上的代码一边「生长」,音乐一边「流出」。
Strudel.cc 则是 TidalCycles 模式的 JavaScript 实现,它将这套强大的模式语言移植到了浏览器里,用户无需安装任何软件,打开网页就能开始实时编码音乐。它支持完整的 Tidal 迷你记谱法(mini-notation),可以用极简的字符串表达复杂的节奏型,比如 "bd sd bd sd" 就是四拍子的鼓组循环,"~ hh*4~ hh" 则是 hi-hat 的切分节奏。
live-coding-music-mcp 的本质是一个 MCP(Model Context Protocol)服务器,它在 Claude AI 和 Strudel.cc 浏览器之间架起了一座桥梁。Claude 通过 MCP 协议调用一系列工具,这些工具通过 Playwright 自动化浏览器中的 Strudel.cc 界面,完成从作曲到播放的全流程。
目前它提供了 27 个 MCP 工具,归类为以下能力域:
音乐控制与播放:init 初始化浏览器会话,playback 控制播放/暂停/停止,effect 添加音效,shape 调节音色维度,audio_capture 捕获实时音频进行 FFT 分析。
模式编辑与生成:pattern_store 管理模式存储(保存/加载/列举/删除),edit_pattern 多模式编辑(append/insert/replace/clear),transform 音频变换(transpose/reverse/stretch/quantize/humanize),generate_part 基于模板生成各声部(鼓组/贝斯/旋律/和声)。
高级音乐工具:generate_rhythm 生成复杂节奏型,music_theory 查询音阶/和弦/模式,ai_assist 调用 Gemini 进行 AI 辅助作曲反馈,session 支持多会话隔离。
模板引擎内置了 8 种音乐风格(techno、house、drum & bass、ambient、trap、jungle、jazz、experimental),每种风格都有多个预设模式。用户还可以指定 BPM 和调性,系统会生成完整的鼓组、低音、旋律和声轨道。
项目的架构文档(ARCHITECTURE.md)详细描述了其内部结构,整体分为五个核心模块:
StrudelMCPServer(src/server/server.ts):这是整个系统的入口和调度中心。它聚合了 26 个工具定义,根据请求类型路由到对应的服务模块。每个响应都被包装在一个结构化的结果信封(result envelope)中,包含 { ok, errorCategory, isRetryable } 字段,客户端可以通过程序化判断响应状态而无需解析文本。此外它还负责 MCP 资源服务(如 strudel://examples),提供目录浏览功能而不消耗工具调用配额。
StrudelController(src/StrudelController.ts):这是 Playwright 浏览器自动化层的核心。它管理 Chromium 实例的生命周期,直接通过 CodeMirror 编辑器的内部 API 操作 DOM(而不是模拟键盘输入),这使得代码写入速度比传统方式快约 80%。它还实现了编辑器内容缓存(100ms TTL)、页面加载时阻止图片和字体资源以加速启动。
AudioAnalyzer(src/AudioAnalyzer.ts):通过 Web Audio API 注入实现实时音频分析。1024 点 FFT 提供频谱数据,可以提取频率分布(低音/中低音/中音/中高音/高音)、光谱质心、峰值频率、节拍检测(基于 onset 检测,范围 40-200 BPM)和调性检测(Krumhansl-Schmuckler 算法)。所有分析结果有 50ms 的缓存 TTL。
PatternGenerator(src/services/PatternGenerator.ts):基于模板的音乐生成引擎(非 AI),支持 8 种风格的模式生成。
MusicTheory(src/services/MusicTheory.ts):乐理引擎,提供 15+ 种音阶、8 种和弦进行风格、欧几里得节奏和 polyrhythm 生成。
这个项目的代码质量令人印象深刻。它拥有 1709 个测试用例,涵盖单元测试、集成测试和示例验证三大类,整体语句覆盖率达到 86.32%,分支覆盖率 75.93%。CI 流水线经过硬化:OpenSSF Scorecard 评估、SHA 固定的 GitHub Actions、Dependabot 依赖更新(需通过 CI 才合并)、npm OIDC 可信发布(带 SLSA 构建来源证明)。
项目采用 TypeScript 开发,严格的 ESLint 配置确保代码风格一致。1709 个测试中有 20 个被跳过(需要真实浏览器的 Playwright 测试)。
npm 全局安装(最简方式):npm install -g @williamzujkowski/live-coding-music-mcp && npx playwright install chromium,安装后需要 Node.js >= 22 和 Chromium 浏览器。
源码构建(适合开发者):clone 后 npm install && npx playwright install chromium && npm run build,然后配置 Claude Desktop 或 Claude Code 的 MCP 配置即可使用。
Docker 容器化(最推荐生产使用):项目提供了多阶段 Dockerfile(builder 阶段编译 TypeScript,runtime 阶段精简至 Node 22 Alpine + Chromium),以及 docker-compose.yml 提供生产服务和开发服务两个配置。生产环境镜像约数百 MB。
明确标注为 Beta 软件:官方在 README 中写明「Not Production-Ready」,这是实验性软件,存在 bug、不完整功能和破坏性变更的可能。
依赖上游 Strudel.cc:这是一个非官方的粉丝项目,通过 Playwright 控制 strudel.cc 网站。上游网站的变化(如 UI 改版、选择器变更)可能导致工具失效,需要持续维护。
非标准模式需要手动迭代:虽然核心流程(初始化 → 作曲 → 播放 → 分析)可靠,但非标准音乐模式可能需要人工干预调试。
浏览器自动化带来的复杂性:相比纯后端服务,这个 MCP 服务器需要维护一个真实的浏览器实例,在资源受限环境或无头服务器上可能遇到问题。
Live Coding 音乐社区虽然小众但活跃,TidalCycles、Sonic Pi 等项目已经培育了大量创作者。live-coding-music-mcp 的核心价值在于:将 AI 助手的能力引入这个领域,让不懂 Tidal 迷你记谱法的人也能快速生成有质感的音乐模式。对于有音乐制作经验但缺乏编程背景的用户来说,这大幅降低了 Live Coding 的学习曲线。
从技术趋势看,这个项目代表了 AI Agent 落地的一个有趣方向:不是让 AI 替代创作,而是让 AI 作为创作的「副驾驶」,在用户熟悉的领域(文本对话)提供能力扩展。随着 MCP 协议的生态扩大,这类工具可能会越来越常见。

图1:Strudel.cc 浏览器界面 — 代码即音乐,音乐即代码