Sonic Pi MCP
Interactúa con Sonic Pi, el sintetizador musical de codificación en vivo, usando mensajes OSC.
Documentación
Sonic Pi MCP
Servidor de Model Context Protocol (MCP) para Sonic Pi. Describe música en lenguaje natural en tu cliente LLM; el modelo genera código de Sonic Pi y este servidor lo envía a través de OSC. Usa el queue runner incluido en Sonic Pi para hacer crossfades entre segmentos.
Características
queue_segment— envía el siguiente segmento musical completo (nombradoslive_loops,use_bpm, etc.).run_code— igual quequeue_segment(compatibilidad).stop_all— detención forzada vía OSC (/stop-all-jobs), como el botón Stop de Sonic Pi.play_note— nota de prueba rápida.- Recurso — elaboración de sesiones de DJ, vocabulario y uso de herramientas (leído desde el cliente MCP).
- Prompt
next_performance_segment— ayuda a enmarcar el siguiente bloque para sets más largos. - Env —
OSC_HOST,OSC_PORT,OSC_CODE_PATH,OSC_STOP_ALL_PATH.
Requisitos previos
- Sonic Pi v4.x
- Node.js 18+ (
npx/node) - Un cliente compatible con MCP (Cursor, Claude Desktop, VS Code con MCP, etc.)
Opcional: Bun para desarrollo local (bun run dev).
Configuración única de Sonic Pi (queue runner)
- Abre Sonic Pi.
- Copia sonic-pi-queue.rb en un buffer.
- Pulsa Run y déjalo en ejecución.
El buffer escucha en el puerto OSC predeterminado y hace crossfade entre los segmentos enviados por el MCP.
Instalar el servidor MCP
npx -y sonic-pi-mcp
Apunta tu cliente a este comando a través de stdio (ver más abajo).
Cursor
Usa ~/.cursor/mcp.json y/o .cursor/mcp.json en un proyecto:
{
"mcpServers": {
"sonic_pi_mcp": {
"command": "npx",
"args": ["-y", "sonic-pi-mcp"]
}
}
}
Clon local (después de npm install o bun install y bun run build):
{
"mcpServers": {
"sonic_pi_mcp": {
"command": "node",
"args": ["/absolute/path/to/sonic-pi-mcp/bin/cli.mjs"]
}
}
}
Bun sin compilar — algunos clientes ignoran cwd; usa una ruta absoluta a src/server.ts, o usa el lanzador:
{
"mcpServers": {
"sonic_pi_mcp": {
"command": "/absolute/path/to/sonic-pi-mcp/bin/mcp-dev.sh",
"args": []
}
}
}
Ejecuta chmod +x bin/mcp-dev.sh una vez. El script cambia al repositorio y ejecuta bun run src/server.ts.
Claude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json (las rutas difieren en Windows):
{
"mcpServers": {
"sonic_pi_mcp": {
"command": "npx",
"args": ["-y", "sonic-pi-mcp"]
}
}
}
Para un clon local, prefiere bin/mcp-dev.sh (ver arriba) si ves Module not found "src/server.ts" o spawn bunx ENOENT. Elimina y vuelve a añadir el MCP en la aplicación si hay una definición antigua en caché.
VS Code
Configura tu extensión MCP para ejecutar npx con -y y sonic-pi-mcp, transporte stdio, según la documentación de la extensión.
Variables de entorno
| Variable | Predeterminado | Significado |
|---|---|---|
OSC_HOST | 127.0.0.1 | Host de Sonic Pi |
OSC_PORT | 4560 | Puerto OSC de Sonic Pi |
OSC_CODE_PATH | /run-code | Ruta OSC para el código (debe coincidir con tu buffer de Sonic Pi) |
OSC_STOP_ALL_PATH | /stop-all-jobs | Ruta de detención forzada |
Permite OSC entrante en Sonic Pi si te conectas desde otra máquina; configura OSC_HOST en consecuencia.
Desarrollo
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
Prueba rápida de OSC (con Sonic Pi + runner en ejecución):
bun run test
Inspector MCP
npx @modelcontextprotocol/inspector
Usa node con el argumento bin/cli.mjs y este directorio como directorio de trabajo (después de bun run build).
Solución de problemas
- Sin sonido — ¿Sonic Pi abierto? ¿El buffer de la cola en ejecución? ¿Puerto 4560 accesible?
- No pasa nada — OSC habilitado en Sonic Pi;
OSC_HOST/OSC_PORTcoinciden. - Las capas se acumulan — Usa
queue_segmentconlive_loops nombrados; usastop_allsolo para un reinicio completo. Module not found "src/server.ts"(Claude) — Usabin/mcp-dev.shcomocommandconargsvacío, o rutas absolutas; no confíes solo encwd.resources/list/prompts/list→ Método no encontrado — Estás en una versión anterior que solo exponía herramientas. Reinstala/reinicia el MCP desde este repositorio o npm para que los recursos y prompts queden registrados.- Errores de Ruby en el registro de Sonic Pi — El código generado no se pudo analizar ni ejecutar; corrige el fragmento (corchetes, samples, sintaxis) y envíalo de nuevo. El queue runner imprime un fragmento de código en caso de error.
Licencia
MIT — ver LICENSE.