关于 Sonic Pi MCP
Sonic Pi MCP 是一个用于控制 Sonic Pi 的 MCP 服务,可让 AI 助手根据自然语言描述生成音乐代码并通过 OSC 发送给 Sonic Pi。适合希望用对话方式进行现场编曲或音乐实验的用户。
主要功能
- 01queue_segment 发送下一段完整乐句
- 02stop_all 通过 OSC 立即停止所有任务
- 03play_note 发送测试音符
- 04提供 DJ 会话相关的资源与提示词
- 05支持通过环境变量配置 OSC 地址和端口
适用场景
- 01用自然语言描述生成 Sonic Pi 乐曲片段
- 02在 Sonic Pi 中进行段落之间的交叉淡化
- 03现场演出中分段推送并管理编曲
MCP 相关
该项目是一个 MCP 服务,向 MCP 客户端暴露 queue_segment、run_code、stop_all、play_note 等工具,并提供资源与提示词。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Sonic Pi MCP
适用于 Sonic Pi 的模型上下文协议(MCP)服务。在 LLM 客户端中用自然语言描述音乐;模型会生成 Sonic Pi 代码,本服务再通过 OSC 发送代码。使用 Sonic Pi 中随附的 队列运行器,可在各个乐段之间进行交叉淡化。
功能
queue_segment— 发送下一个完整乐段(命名的live_loop、use_bpm等)。run_code— 与queue_segment相同(用于兼容)。stop_all— 通过 OSC(/stop-all-jobs)硬停止,效果类似 Sonic Pi 的 Stop。play_note— 快速测试音符。- 资源 — DJ 演奏会的创作技巧、词汇和工具用法(从 MCP 客户端读取)。
- 提示词
next_performance_segment— 为更长的演出提供下一段乐曲的构思辅助。 - 环境变量 —
OSC_HOST、OSC_PORT、OSC_CODE_PATH、OSC_STOP_ALL_PATH。
前置条件
可选:使用 Bun 进行本地开发(bun run dev)。
Sonic Pi 一次性设置(队列运行器)
- 打开 Sonic Pi。
- 将 sonic-pi-queue.rb 复制到一个缓冲区中。
- 按下 Run 并保持运行。
该缓冲区会监听默认 OSC 端口,并在 MCP 发送的乐段之间进行交叉淡化。
安装 MCP 服务
npx -y sonic-pi-mcp
让客户端通过 stdio 调用此命令(见下文)。
Cursor
使用 ~/.cursor/mcp.json 和/或项目中的 .cursor/mcp.json:
{
"mcpServers": {
"sonic_pi_mcp": {
"command": "npx",
"args": ["-y", "sonic-pi-mcp"]
}
}
}
本地克隆(运行 npm install 或 bun install 和 bun run build 后):
{
"mcpServers": {
"sonic_pi_mcp": {
"command": "node",
"args": ["/absolute/path/to/sonic-pi-mcp/bin/cli.mjs"]
}
}
}
无需构建直接使用 Bun — 有些客户端会忽略 cwd;请使用 src/server.ts 的绝对路径,或使用启动脚本:
{
"mcpServers": {
"sonic_pi_mcp": {
"command": "/absolute/path/to/sonic-pi-mcp/bin/mcp-dev.sh",
"args": []
}
}
}
运行一次 chmod +x bin/mcp-dev.sh。该脚本会切换到仓库目录并运行 bun run src/server.ts。
Claude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json(Windows 上的路径有所不同):
{
"mcpServers": {
"sonic_pi_mcp": {
"command": "npx",
"args": ["-y", "sonic-pi-mcp"]
}
}
}
对于本地克隆,如果遇到 Module not found "src/server.ts" 或 spawn bunx ENOENT,建议使用 bin/mcp-dev.sh(见上文)。如果应用缓存了旧配置,请移除 MCP 后重新添加。
VS Code
按照扩展文档,将 MCP 扩展配置为使用 -y 和 sonic-pi-mcp 参数运行 npx,并使用 stdio 传输。
环境变量
| 变量 | 默认值 | 含义 |
|---|---|---|
OSC_HOST | 127.0.0.1 | Sonic Pi 主机 |
OSC_PORT | 4560 | Sonic Pi OSC 端口 |
OSC_CODE_PATH | /run-code | 代码的 OSC 路径(必须与 Sonic Pi 缓冲区匹配) |
OSC_STOP_ALL_PATH | /stop-all-jobs | 硬停止路径 |
如果从其他机器连接,请在 Sonic Pi 中允许传入 OSC,并相应设置 OSC_HOST。
开发
git clone https://github.com/abhishekjairath/sonic-pi-mcp.git
cd sonic-pi-mcp
bun install # or npm install
bun run build
bun run dev
OSC 冒烟测试(Sonic Pi 和运行器均已运行):
bun run test
MCP Inspector
npx @modelcontextprotocol/inspector
构建后(bun run build),使用 node,参数为 bin/cli.mjs,并将此目录设为工作目录。
故障排除
- 没有声音 — Sonic Pi 是否已打开?队列缓冲区是否正在运行?端口 4560 是否可访问?
- 没有任何反应 — Sonic Pi 中是否启用了 OSC;
OSC_HOST/OSC_PORT是否匹配。 - 音轨层不断叠加 — 使用带名称的
live_loop和queue_segment;仅在需要完全重置时使用stop_all。 Module not found "src/server.ts"(Claude) — 将bin/mcp-dev.sh设为command并使用空的args,或使用绝对路径;不要只依赖cwd。resources/list/prompts/list→ Method not found — 你使用的是较旧的构建版本,该版本只提供了工具。请从此仓库或 npm 重新安装/重启 MCP,以注册资源和提示词。- Sonic Pi 日志中出现 Ruby 错误 — 生成的代码解析失败或无法运行;请修正代码片段(括号、采样、语法)后重新发送。队列运行器会在失败时打印代码片段。
许可证
MIT — 参见 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。