Skip to main content
The Vibrai MCP server gives an AI assistant direct, bidirectional control over Ableton Live. You describe what you want in plain language — “create a four-bar bass loop in D minor” or “build a minimal techno track with three sections” — and the assistant calls the right sequence of tools while you watch the results appear in Live.

How the connection works

The core request path is a three-layer stack:
  1. vibrai.amxd — a Max for Live device you load on any track. Inside it, a Node.js script runs an Express HTTP server on localhost:3333 and translates REST calls into Live’s LOM via the Max js object.
  2. Vibrai.Mcp — a C# process that communicates with your MCP client over stdio using JSON-RPC. Every tool call is proxied to the M4L device via HTTP.
  3. Your MCP client — Claude Desktop, Claude Code, Cursor, or any other MCP-capable host. It sees the tools via the standard tools/list / tools/call protocol.
The M4L device is stateless. All Vibrai-specific state — project files, instrument tags, genre libraries — lives on disk alongside your Live set and is managed by the C# layer. Session-view automation (envelope reads and writes) additionally routes through the Vibrai Python remote script on localhost:3334, installed separately via install_vibrai_remote_script / vibrai install remote-script. get_version reports it as the python_bridge field. See Installation and Troubleshooting.

Connecting Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
Restart Claude Desktop. Open a new conversation — the Vibrai tools will be available.

How tools map to engine operations

Each MCP tool corresponds directly to a method on the underlying engine or bridge. Tools are grouped by domain: transport, tracks, clips, notes, drum maps, automation, devices, instruments, scenes, arrangement, scales, project, genre, generation, capture, sessions, license, install, update, uninstall, and version. See the Reference section for every tool, its parameters, and the matching CLI command.

snake_case parameter convention

All MCP tool parameters use snake_case. This is enforced at the wire level:
  • track_id, scene_index, start_beat, source_scene_index, part_type
If an LLM sends camelCase keys (for example trackId instead of track_id), the server’s binding filter catches the failure and returns a clear error message pointing at the correct snake_case form.

First-song wizard

The fastest way to hear Vibrai in action through MCP is the first-song wizard:
The assistant calls start_first_song(vibe="lofi-house"). A full arrangement appears in Live in about 30–60 seconds. Supported vibes: ambient-techno, lofi-house, deep-house, ambient-downtempo, minimal-techno. Each maps to a verified genre and preset pair.
The wizard executes; it does not hand back a script. It drives the engine directly and returns one structured result — mint the project, render it, start playback — not a recipe for the assistant to replay as further tool calls. If a step comes back with action: "load_device_failed", that track has no instrument and will play silently, even though the run still reports completed.
An option the wizard can’t resolve — an omitted vibe, an ambiguous preset, or a Live set that already holds MIDI tracks — comes back as outcome: "needs_input" with the valid choices listed. That is not an error: present the choices and call the tool again with the value filled in.

Things you can ask for

You don’t need any special syntax. Describe what you want. These are copy-and-paste starting points.
Generates a complete loop with drums, pads, and bass in an ambient techno style.
Applies a genre preset, then renders instruments from Ableton’s own Core Library only, skipping any tagged presets or defaults.instruments overrides in the file. Useful for demos, testing, or any machine without extra sound packs.Under the hood that is apply_genre with confirm: true, then generate with with_instruments: true and stock_only: true. Every one of the 14 built-in genres ships its own stock-instrument picks — see Concepts for the resolution order.
Creates a new bass track with a minimal, root-note pattern.
Adds a lead melody on a new or existing track.
Thins out the drum pattern in whatever section you call the breakdown.
Scaffolds a complete arrangement across multiple scenes.
Reports the BPM and the key and scale Live is set to.
Worth doing before making edits, so the assistant knows exactly what it is working with.
Writes your project to a file you can reopen, share, or regenerate later.
Reads your existing Live set — whatever you built by hand — and saves it as a Vibrai project.
Reads the open Live set — tempo, scale, instruments, arrangement — and saves its character as a new genre you can apply to future projects. Ask for “faithful” mode if you want the actual riffs embedded, not just the style.

Getting better results

Name the section you mean. Instead of “change the second part,” say “in the breakdown” or “in the chorus.” The assistant works better with named sections. Name the instrument. “Bass,” “drums,” “lead,” and “pads” are all clear. “The thing on track 3” is harder to act on — if you’re not sure what’s there, ask it to list the tracks. Say keys and scales the way you’d say them out loud. “F minor,” “C major,” and “D Dorian” all work. You don’t need numbers. Undo is always available. Everything Vibrai writes to Live is a normal edit, the same as dragging MIDI notes in by hand. Press Cmd+Z in Live to undo anything you don’t like. If the assistant keeps picking the wrong track, give it a map before it starts:

Reference pages

The full parameter schema for every tool lives in the generated Reference section: