mcpField
S
Sonic Pi MCP

Sonic Pi MCP

Local
github.com/abhishekjairathMedia & Design19Updated 31w ago

About Sonic Pi MCP

Sonic Pi MCP is an MCP server that lets an AI assistant turn natural-language music descriptions into Sonic Pi code and send it over OSC. It suits users who want to arrange or experiment with music through conversation, with a queue runner in Sonic Pi handling crossfades between segments.

Key features

  1. 01queue_segment sends the next full musical segment
  2. 02stop_all performs a hard stop over OSC
  3. 03play_note sends a quick test note
  4. 04Resource and prompt for DJ session guidance
  5. 05Configurable OSC host, port and paths via environment variables

Use cases

  1. 01Generating Sonic Pi music segments from natural-language descriptions
  2. 02Crossfading between song sections in Sonic Pi
  3. 03Pushing and managing segments during live performance

MCP support

This project is an MCP server that exposes tools such as queue_segment, run_code, stop_all and play_note, along with a resource and a prompt, to MCP clients.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

No install method listed yet

We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.

Repository

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project README

Sonic Pi MCP

Model Context Protocol (MCP) server for Sonic Pi. Describe music in natural language in your LLM client; the model generates Sonic Pi code and this server sends it over OSC. Use the included queue runner in Sonic Pi for crossfades between segments.

Features

  • queue_segment — send the next full musical segment (named live_loops, use_bpm, etc.).
  • run_code — same as queue_segment (compatibility).
  • stop_all — hard stop via OSC (/stop-all-jobs), like Sonic Pi’s Stop.
  • play_note — quick test note.
  • Resource — DJ session craft, vocabulary, and tool usage (read from the MCP client).
  • Prompt next_performance_segment — help frame the next block for longer sets.
  • Env — OSC_HOST, OSC_PORT, OSC_CODE_PATH, OSC_STOP_ALL_PATH.

Prerequisites

  • Sonic Pi v4.x
  • Node.js 18+ (npx / node)
  • An MCP-capable client (Cursor, Claude Desktop, VS Code with MCP, etc.)

Optional: Bun for local development (bun run dev).

One-time Sonic Pi setup (queue runner)

  1. Open Sonic Pi.
  2. Copy sonic-pi-queue.rb into a buffer.
  3. Press Run and leave it running.

The buffer listens on the default OSC port and crossfades between segments sent by the MCP.

Install the MCP server

npx -y sonic-pi-mcp

Point your client at this command over stdio (see below).

Cursor

Use ~/.cursor/mcp.json and/or .cursor/mcp.json in a project:

{
  "mcpServers": {
    "sonic_pi_mcp": {
      "command": "npx",
      "args": ["-y", "sonic-pi-mcp"]
    }
  }
}

Local clone (after npm install or bun install and bun run build):

{
  "mcpServers": {
    "sonic_pi_mcp": {
      "command": "node",
      "args": ["/absolute/path/to/sonic-pi-mcp/bin/cli.mjs"]
    }
  }
}

Bun without building — some clients ignore cwd; use an absolute path to src/server.ts, or use the launcher:

{
  "mcpServers": {
    "sonic_pi_mcp": {
      "command": "/absolute/path/to/sonic-pi-mcp/bin/mcp-dev.sh",
      "args": []
    }
  }
}

Run chmod +x bin/mcp-dev.sh once. The script changes into the repo and runs bun run src/server.ts.

Claude Desktop

~/Library/Application Support/Claude/claude_desktop_config.json (paths differ on Windows):

{
  "mcpServers": {
    "sonic_pi_mcp": {
      "command": "npx",
      "args": ["-y", "sonic-pi-mcp"]
    }
  }
}

For a local clone, prefer bin/mcp-dev.sh (see above) if you see Module not found "src/server.ts" or spawn bunx ENOENT. Remove and re-add the MCP in the app if an old definition is cached.

VS Code

Configure your MCP extension to run npx with -y and sonic-pi-mcp, stdio transport, per the extension’s docs.

Environment variables

VariableDefaultMeaning
OSC_HOST127.0.0.1Sonic Pi host
OSC_PORT4560Sonic Pi OSC port
OSC_CODE_PATH/run-codeOSC path for code (must match your Sonic Pi buffer)
OSC_STOP_ALL_PATH/stop-all-jobsHard stop path

Allow incoming OSC in Sonic Pi if you connect from another machine; set OSC_HOST accordingly.

Development

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 smoke test (Sonic Pi + runner running):

bun run test
MCP Inspector
npx @modelcontextprotocol/inspector

Use node with argument bin/cli.mjs and this directory as the working directory (after bun run build).

Troubleshooting

  • No sound — Sonic Pi open? Queue buffer running? Port 4560 reachable?
  • Nothing happens — OSC enabled in Sonic Pi; OSC_HOST / OSC_PORT match.
  • Layers pile up — Use queue_segment with named live_loops; use stop_all only for a full reset.
  • Module not found "src/server.ts" (Claude) — Use bin/mcp-dev.sh as command with empty args, or absolute paths; don’t rely on cwd alone.
  • resources/list / prompts/list → Method not found — You’re on an older build that only exposed tools. Reinstall/restart the MCP from this repo or npm so resources and prompts are registered.
  • Ruby errors in Sonic Pi log — The generated code failed to parse or run; fix the snippet (brackets, samples, syntax) and send again. The queue runner prints a code snippet on failure.

License

MIT — see LICENSE.

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.