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 (nombrados live_loops, use_bpm, etc.).
  • run_code — igual que queue_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.
  • EnvOSC_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)

  1. Abre Sonic Pi.
  2. Copia sonic-pi-queue.rb en un buffer.
  3. 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

VariablePredeterminadoSignificado
OSC_HOST127.0.0.1Host de Sonic Pi
OSC_PORT4560Puerto OSC de Sonic Pi
OSC_CODE_PATH/run-codeRuta OSC para el código (debe coincidir con tu buffer de Sonic Pi)
OSC_STOP_ALL_PATH/stop-all-jobsRuta 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_PORT coinciden.
  • Las capas se acumulan — Usa queue_segment con live_loops nombrados; usa stop_all solo para un reinicio completo.
  • Module not found "src/server.ts" (Claude) — Usa bin/mcp-dev.sh como command con args vacío, o rutas absolutas; no confíes solo en cwd.
  • 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.