Getting started
The integration has two local pieces: an Ableton Remote Script listening inside Live and a Python MCP server used by your assistant.
1. Install the Remote Script
Copy the repository's BetterAbletonMCP_Remote_Script folder into your Ableton User Library's Remote Scripts folder. On Windows this is commonly:
Restart Live. In Preferences → Link, Tempo & MIDI, select BetterAbletonMCP_Remote_Script as a Control Surface. Leave its Input and Output set to None.
2. Install the MCP server
From the repository root:
Optional: selected-audio chord generation
The generate_chords_for_selected_audio tool uses local pitch-analysis
libraries that are not installed by the base package. Install the audio
extra if you want to turn a selected vocal or other monophonic audio phrase
into a chord progression:
This installs librosa and soundfile. Audio analysis happens in the MCP
server process and does not create an intermediate MIDI transcription. The
generated accompaniment is a normal MIDI chord clip. When optional THIRI
voicing is enabled, only the locally chosen chord symbols and inferred key are
sent; audio is never uploaded.
Optional: THIRI theory and voicing
The base server, local MIDI analysis, and selected-audio workflow do not require an account or API key. To use hosted chord-theory enrichment, reharmonization, or advanced voicings, obtain a key from THIRI Innovate and expose it to the MCP server process:
Use .env.example as a reference, but configure the variable in your shell or
MCP client; the server does not automatically load .env. Keep credentials out
of source control. If a key has been pasted into chat, logs, or a commit, rotate
it before use.
The official REST endpoint is https://chords.thiri.ai. These optional
variables control the client:
| Variable | Default | Purpose |
|---|---|---|
THIRI_API_KEY |
unset | Bearer credential for hosted THIRI requests. |
THIRI_API_URL |
https://chords.thiri.ai |
API base URL. Remote URLs must use HTTPS; plain HTTP is accepted only for localhost, 127.0.0.1, or ::1. |
THIRI_TIMEOUT_SECONDS |
8 |
Positive request timeout in seconds. |
For example, an MCP client configuration can add an env object:
{
"mcpServers": {
"better-ableton": {
"command": "C:\\absolute\\path\\to\\.venv\\Scripts\\python.exe",
"args": ["-m", "better_ableton_mcp.server"],
"cwd": "C:\\absolute\\path\\to\\better-ableton-mcp",
"env": {
"THIRI_API_KEY": "your_rotated_key"
}
}
}
}
3. Add it to an MCP client
Use absolute paths. A typical configuration is:
{
"mcpServers": {
"better-ableton": {
"command": "C:\\absolute\\path\\to\\.venv\\Scripts\\python.exe",
"args": ["-m", "better_ableton_mcp.server"],
"cwd": "C:\\absolute\\path\\to\\better-ableton-mcp"
}
}
}
On macOS or Linux, point command to .venv/bin/python and use the appropriate absolute cwd.
4. Verify the connection
Open a Live set, ensure the Control Surface is enabled, restart the MCP client, and ask:
Track and clip indices are zero-based at the protocol level. Ask for session information first whenever the intended track or slot is ambiguous.
To verify optional audio analysis, click a warped monophonic audio clip in Arrangement View so it appears in Clip View, and ask:
The selected track and the clip shown in Detail/Clip View must refer to the
same Arrangement audio clip. The defaults (selection_mode="clip", bars=0)
analyze the whole clip and make the generated MIDI clip follow its exact
duration; the final chord is shortened when the clip ends partway through a
bar. To analyze only a phrase, select it, press Cmd-L/Ctrl-L, and call
the tool with selection_mode="loop".
Connection settings
The Remote Script listens on TCP port 9877 by default. The MCP server connects to localhost. Override the client side when needed:
| Variable | Default | Purpose |
|---|---|---|
ABLETON_HOST |
localhost |
Host running Ableton Live |
ABLETON_PORT |
9877 |
Remote Script socket port |
Troubleshooting
- Could not connect: Confirm Live is running and the Control Surface is selected, then restart the MCP client.
- Browser unavailable: Wait for Live to finish loading its Browser and retry.
- Audio clip import fails:
create_audio_cliprequires Live 12.0.5+, an audio track, an empty Session slot, and an absolute supported-audio path. - Harmony analysis or generation reports
MidiNoteis not subscriptable: Replace the installedBetterAbletonMCP_Remote_Scriptfolder with the current repository version and restart Live. Current releases normalize Live 11/12 MIDI-note objects and support Arrangement-only MIDI sources. - Audio-analysis dependencies are missing: Activate the same virtual environment used by the MCP client, run
pip install -e ".[audio]", and restart the client. - Select an Arrangement audio clip: Click the clip and make sure it is visible in Clip View. Session audio clips are not accepted by
generate_chords_for_selected_audio. - Arrangement Loop is off or does not overlap: This applies only to the opt-in
selection_mode="loop"; select the phrase, press Cmd-L/Ctrl-L, and confirm Live's Loop switch is enabled. - Warp or Re-Pitch error: Enable Warp and choose a mode other than Re-Pitch. The analyzer requires at least two warp markers to map source-audio time to Arrangement beats.
- Audio file unavailable or unreadable: Ableton and the MCP server must expose the clip's source path through the same filesystem. WAV, FLAC, and OGG are dependable choices on typical installs; exact codec support comes from the installed
librosa/soundfilestack. Convert to WAV if a compressed format fails. - Selection exceeds the analysis limit: Shorten the loop or clip selection to at most 300 seconds of mapped source audio.
- No reliable vocal pitches: Choose a clearer monophonic phrase or lower
minimum_pitch_confidencefrom its default of0.65. Polyphonic vocals, dense backing tracks, reverb, and heavy noise can confuse the pitch detector. - THIRI_API_KEY is not configured: Set the key in the environment used to
launch the MCP server, then restart the MCP client. Alternatively use
theory_provider="local";autoalso works locally when no key is present. - THIRI is unavailable, timed out, or over quota:
theory_provider="auto"returns the local result with aprovider_warning. An explicittheory_provider="thiri"request fails instead of silently changing the requested behavior.reharmonize_chord_progressionalways requires THIRI. - THIRI timeout or URL configuration error:
THIRI_TIMEOUT_SECONDSmust be numeric and positive.THIRI_API_URLmust use HTTPS unless it targets a loopback host. - Wrong track changed: Inspect the session first; MCP tool indices start at zero.
Ableton version notes
The project supports Ableton Live 11 and 12. Selected-audio analysis uses the
Arrangement clip, Detail View, Warp marker, and loop APIs available in those
versions. When Live exposes direct Arrangement MIDI-clip creation, the Remote
Script uses it; otherwise it copies through an empty Session slot. The separate
create_audio_clip import tool still requires Live 12.0.5 or newer.
The THIRI integration changes only the Python MCP server; it does not require a
new Remote Script command or a different Ableton Live version.