Published 2025-10-25.
Last modified 2025-10-27.
Time to read: 6 minutes.
av_studio collection.
After writing Options for Controlling Ableton Live with MCP, I wanted to have an LLM interpret my spoken instructions so it controls Ableton Live Studio 12 running on Windows 11. I emphatically do not want to use Docker, because it adds complexity and overhead without adding value. This video demonstrates something similar.
My main DAW is described here. It runs Windows 11, so this articles reflects that. Although I use WSL2 extensively, it is not required for this adventure.
About ahujasid/ableton-mcp
This MCP integration is currently the most popular choice for controlling Ableton Live from an LLM. The system consists of two main components:
-
Ableton Remote Script
(
Ableton_Remote_Script/__init__.py): Creates a socket server to receive and execute commands from an LLM. -
MCP Server (
server.py): An MCP server written in Python that connects to the Ableton Remote Script. This MCP server uses OSC over sockets, not MIDI, to converse with Ableton Live.
ahujasid/ableton-mcp on GitHub documentation has serious
errors and I wonder how many people gave up trying to make it work.
Prerequisites
Before starting, ensure the following:
- Ableton Live 12 or Ableton Live Studio 12 is installed on Windows 10 or 11.
-
Claude Desktop is
installed. Any current MCP host would work for the MCP integration,
so long as Claude is the LLM used, because
ahujasid/ableton-mcpis designed specifically for Claude. - You have an active billing account with Anthropic.
Setup
nvm-windows
Because Node.js does not provide native Windows installers,
I used nvm-windows
to install to C:\nvm4w\nodejs instead of downloading from
nodejs.org.
Node.js
I installed Node.js on native Windows like this:
PS C:\Users\mslinn> nvm install lts Downloading node.js version 22.21.0 (64-bit)... Extracting node and npm... Complete Installation complete. If you want to use this version, type:
nvm use 22.21.0
$ nvm use 22.21.0 Now using node v22.21.0 (64-bit)
$ npm install -g npm@latest removed 27 packages, and changed 77 packages in 8s
Smithery Does Not Work
The ahujasid/ableton-mcp installation instructions
say to use
Smithery CLI for AI
to install the ahujasid/ableton-mcp MCP server.
Unfortunately, ahujasid/ableton-mcp is not available on Smithery.
The instructions in the remainder of this article describe an installation
method that works with current software.
Python
Install Python on native Windows using the Python Installation Manager for Windows.
PS C:\Users\mslinn> py install default Python install manager was successfully updated to 25.0.
Installing Python 3.14.0. Extracting: ...................................................................✅ Python 3.14.0 will be launched by python.exe and also python3[-64].exe, python3.14[-64].exe
PS C:\Users\mslinn> py Python 3.14.0 (tags/v3.14.0:ebf955d, Oct 7 2025, 10:15:03) [MSC v.1944 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>>
Install uv (Python Package Manager)
uv handles dependency resolution for the
ahujasid/ableton-mcp MCP server without needing a full virtual
environment.
Open PowerShell as Administrator by
pressing and releasing the Windows key,
then typing powershell, and right-clicking on Run as Administrator.
Type the following:
PS C:\Users\mslinn> irm https://astral.sh/uv/install.ps1 | iex Downloading uv 0.9.5 (x86_64-pc-windows-msvc) Installing to C:\Users\mslinn\.local\bin uv.exe uvx.exe uvw.exe everything's installed! To add C:\Users\mslinn\.local\bin to your PATH, either restart your shell or run: set Path=C:\Users\mslinn\.local\bin;%Path% (cmd) $env:Path = "C:\Users\mslinn\.local\bin;$env:Path" (powershell)
Close and reopen a non-administrative PowerShell. Verify the installation by typing:
PS C:\Users\mslinn> uv --version uv 0.9.5 (d5f39331a 2025-10-21)
You should see output like uv 0.4.x (latest as of October 2025).
Install the Ableton Remote Script
This step creates an Ableton Remote Script, which acts as a bridge between Ableton Live and an external process. The Ableton Remote Script creates a TCP socket server in Ableton that listens for MCP commands.
The GitHub README.md for the ahujasid/ableton-mcp MCP server has a serious error.
As of Live 10.1.13 (and carried forward to Live 12),
third-party remote scripts must be placed in a User Library Remote Scripts folder
(%USERPROFILE%\Documents\Ableton\User Library\Remote Scripts).
Scripts here auto-persist across updates and are reliably scanned.
The Preferences path recommended by the README.md is only for
basic UserConfiguration.txt tweaks,
not full Python scripts like __init__.py.
The manual steps to create the Ableton Remote Script follow. A PowerShell script follows the manual process explanation that automates the process.
Manual Installation
-
Third-party Remote Scripts must be placed in the User Library, not the Preferences folder.
The Preferences path is deprecated and no longer scanned in Live 12+.
The correct path on Windows is:
%USERPROFILE%\Documents\Ableton\User Library\Remote Scripts
This path is version-independent — it works across all Live 12.x releases and will persist through updates. -
Inside
Remote Scripts, create a new folder namedAbletonMCP. This name is case-sensitive, so enter it exactly as shown. -
You could download
AbletonMCP_Remote_Script/__init__.pyand save it asAbletonMCP/__init__.py. This would work, but if you make even a small typing error, the connection will not work. Also, you would have to manually update the file whenever the version in the Git repository updates.
Alternatively, you could clone the Git repository and link__init__.pyin the cloned repository to a new file with the required name (__init__.py). I recommend this approach instead; it works by creating a symbolic link in Windows to make the link.
Do this in PowerShell:
PowerShellPS C:\Users\mslin> cd $work\ableton # the directory to clone to
PS D:\work\ableton> git clone https://github.com/ahujasid/ableton-mcp.git Cloning into 'ableton-mcp'... remote: Enumerating objects: 83, done. remote: Counting objects: 100% (45/45), done. remote: Compressing objects: 100% (13/13), done. remote: Total 83 (delta 38), reused 32 (delta 32), pack-reused 38 (from 1) Receiving objects: 100% (83/83), 51.42 KiB | 5.14 MiB/s, done. Resolving deltas: 100% (39/39), done.
Windows symbolic links provide the ability to alias files across volumes. Once the Git repository is cloned and a file in the repository is linked to a new file in another directory, each time you rungit pullon the local copy of the Git repository, the linked files will update as well. We will link__init__.pyfrom the Git repository to%APPDATA%\Here is how to make the Windows symlink manually:Ableton\ Live 12.2.6\ Preferences\ User Remote Scripts\ AbletonMCP\ __init__.py PowerShell$sourceFile = "D:\work\ableton\ableton-mcp\AbletonMCP_Remote_Script\__init__.py" $userLibrary = "$env:USERPROFILE\Documents\Ableton\User Library" $destDir = "$userLibrary\Remote Scripts\AbletonMCP" $destFile = "$destDir\__init__.py" # Create User Library if missing if (-not (Test-Path $userLibrary)) { New-Item -ItemType Directory -Path $userLibrary -Force | Out-Null Write-Host "[OK] Created User Library folder" -ForegroundColor Green } # Clean and create destination if (Test-Path $destDir) { Remove-Item $destDir -Recurse -Force } New-Item -ItemType Directory -Path $destDir -Force | Out-Null Write-Host "[OK] Created: $destDir" -ForegroundColor Green # Create symlink New-Item -ItemType SymbolicLink -Path $destFile -Target $sourceFile -Force | Out-Null Write-Host "[OK] Symlink: $destFile -> $sourceFile" -ForegroundColor Green
Scripted Installation
This requires the same clone of the Git repository as the manual step requires:
PS C:\Users\mslin> cd $work/ableton # specify the directory to hold the cloned Git repository
PS D:\work\ableton> git clone https://github.com/ahujasid/ableton-mcp.git Cloning into 'ableton-mcp'... remote: Enumerating objects: 83, done. remote: Counting objects: 100% (45/45), done. remote: Compressing objects: 100% (13/13), done. remote: Total 83 (delta 38), reused 32 (delta 32), pack-reused 38 (from 1) Receiving objects: 100% (83/83), 51.42 KiB | 5.14 MiB/s, done. Resolving deltas: 100% (39/39), done.
Here is the PowerShell script that my friends Gemini, Claude and Grok helped me write. You just need to run it once; the symlink it creates will persist after every Ableton Live update.
<#
.SYNOPSIS
Installs the AbletonMCP Remote Script from a cloned instance of
https://github.com/ahujasid/ableton-mcp.git.
.DESCRIPTION
Uses symbolic link for automatic updates via `git pull`.
Targets the CORRECT User Library path for Live 12+.
Run after every Ableton Live update.
.PARAMETER RepoPath
Path to cloned repo (default: D:\work\ableton\ableton-mcp)
.PARAMETER Help
Show help (default: $false)
.EXAMPLE
.\Install-AbletonMCP.ps1
.\Install-AbletonMCP.ps1 "C:\path\to\repo"
.\Install-AbletonMCP.ps1 -h
.NOTES
Requires Developer Mode (Settings -> For developers) or run as Admin
For more information, see:
https://www.mslinn.com/av_studio/555-ableton-mcp-ahujasid.html
#>
param(
[string]$RepoPath = "D:\work\ableton\ableton-mcp",
[switch]$Help = $false
)
# ---------- Show Help ----------
if ($Help) {
Write-Host @"
Installs the AbletonMCP Remote Script from a cloned instance of
https://github.com/ahujasid/ableton-mcp.git.
Usage:
.\Install-AbletonMCP.ps1 # Assumes D:\work\ableton\ableton-mcp
.\Install-AbletonMCP.ps1 "C:\path" # override path
.\Install-AbletonMCP.ps1 -h # show help
Set once:
`$env:work = "D:\work"
After installing:
Run Ableton Live; open Preferences / Link/MIDI
Look for 'AbletonMCP' in the control surface pulldown
Then run: uvx ableton-mcp
For more information, see:
https://www.mslinn.com/av_studio/555-ableton-mcp-ahujasid.html
"@
exit 0
}
# ---------- Color Helpers ----------
function Write-OK { param([string]$msg) Write-Host "[OK] $msg" -ForegroundColor Green }
function Write-Info { param([string]$msg) Write-Host "[INFO] $msg" -ForegroundColor Yellow }
function Write-Fail { param([string]$msg) Write-Host "[FAIL] $msg" -ForegroundColor Red; exit 1 }
# ---------- Validate Source ----------
$sourceFile = Join-Path $RepoPath "AbletonMCP_Remote_Script\__init__.py"
if (-not (Test-Path $sourceFile)) {
Write-Fail "Repo not found: $RepoPath`nClone first: git clone https://github.com/ahujasid/ableton-mcp.git $RepoPath"
}
$fileSize = (Get-Item $sourceFile).Length
Write-Info "Source: $sourceFile (Size: $fileSize bytes)"
if ($fileSize -eq 0) {
Write-Fail "Source file is empty: $sourceFile"
}
# ---------- Destination (CORRECT User Library path for Live 12+) ----------
$userLibrary = Join-Path $env:USERPROFILE "Documents\Ableton\User Library"
$remoteScriptsDir = Join-Path $userLibrary "Remote Scripts"
$destDir = Join-Path $remoteScriptsDir "AbletonMCP"
$destFile = Join-Path $destDir "__init__.py"
Write-Info "Target: User Library\Remote Scripts (Live 12+ compatible)"
# ---------- Create User Library if needed ----------
if (-not (Test-Path $userLibrary)) {
New-Item -ItemType Directory -Path $userLibrary -Force | Out-Null
Write-OK "Created User Library folder"
}
# ---------- Clean & create destination ----------
if (Test-Path $destDir) {
Write-Info "Removing existing: $destDir"
Remove-Item $destDir -Recurse -Force
}
New-Item -ItemType Directory -Path $destDir -Force | Out-Null
Write-OK "Created dest dir: $destDir"
# ---------- Create Symlink ----------
try {
if (Test-Path $destFile) { Remove-Item $destFile -Force }
New-Item -ItemType SymbolicLink -Path $destFile -Target $sourceFile -Force | Out-Null
# Verify symlink
if (-not (Test-Path $destFile)) {
Write-Fail "Symlink verification failed.`nFix: Enable Developer Mode (Settings -> For developers) or run as Admin"
}
Write-OK "Symlink created: $destFile -> $sourceFile"
} catch {
Write-Fail "Failed to create symlink: $($_.Exception.Message)`nFix: Enable Developer Mode (Settings -> For developers) or run as Admin"
}
# ---------- Verification ----------
Write-Info "Verification"
$folders = Get-ChildItem $remoteScriptsDir -Directory -ErrorAction SilentlyContinue
if ($folders | Where-Object { $_.Name -eq "AbletonMCP" }) {
Write-OK "AbletonMCP folder exists in Remote Scripts"
} else {
Write-Fail "Folder not found after install - check paths"
}
# ---------- Done ----------
Write-Host "`n[OK] INSTALL COMPLETE!" -ForegroundColor Green
Write-Host "`nNext:" -ForegroundColor Yellow
Write-Host "1. Close & reopen Ableton Live 12.2.6" -ForegroundColor White
Write-Host "2. Preferences -> Link/MIDI -> Select 'AbletonMCP' (set Input/Output to None)" -ForegroundColor White
Write-Host "3. Run: uvx ableton-mcp" -ForegroundColor White
Write-Host "`nTo update:" -ForegroundColor Yellow
Write-Host "cd $RepoPath; git pull" -ForegroundColor White
The script can be run any time; if it detects the symlink already exists, it deletes and recreates it.
This is the help message:
PS C:\Users\mslin> .\Install-AbletonMCP.ps1 -h Installs the AbletonMCP Remote Script from a cloned instance of https://github.com/ahujasid/ableton-mcp.git. Usage: .\Install-AbletonMCP.ps1 # Assumes D:\work\ableton\ableton-mcp .\Install-AbletonMCP.ps1 "C:\path" # override path .\Install-AbletonMCP.ps1 -h # show help Set once: $env:work = "D:\work" After installing: Run Ableton Live; open Preferences / Link/MIDI Look for 'AbletonMCP' in the control surface pulldown Then run: uvx ableton-mcp For more information, see: https://www.mslinn.com/av_studio/555-ableton-mcp-ahujasid.html
It is finally time to run the script that creates the symlink. Open PowerShell with Administrator privilege.
PS C:\WINDOWS\system32> .\Install-AbletonMCP.ps1 [INFO] Source: D:\work\ableton\ableton-mcp\AbletonMCP_Remote_Script\__init__.py (Size: 45230 bytes) [INFO] Target: User Library\Remote Scripts (Live 12+ compatible) [OK] Created dest dir: C:\Users\mslin\Documents\Ableton\User Library\Remote Scripts\AbletonMCP [OK] Symlink created: C:\Users\mslin\Documents\Ableton\User Library\Remote Scripts\AbletonMCP\__init__.py -> D:\work\ableton\ableton-mcp\AbletonMCP_Remote_Script\__init__.py [INFO] Verification [OK] AbletonMCP folder exists in Remote Scripts [OK] INSTALL COMPLETE! Next: 1. Close & reopen Ableton Live 12.2.6 2. Preferences -> Link/MIDI -> Select 'AbletonMCP' (set Input/Output to None) 3. Run: uvx ableton-mcp To update: cd D:\work\ableton\ableton-mcp; git pull
Install ableton-mcp
- Launch Ableton Live
-
The documentation said to type the following in a CMD or PowerShell window:
This uses TCP sockets to communicate between the
ableton-mcpMCP server and Claude Desktop.CMD or PowerShell$ uvx ableton-mcpYou could also run
ableton-mcpin STDIO mode, which might be more appropriate for Cursor integration.Shell$ uvx --with ableton-mcp ableton-mcp stdio
Configure Ableton Live
- If the Ableton Remote Script was previously set up, and if it loads successfully, you may see a yellow status message at the bottom of the Ableton Live screen indicating its successful loading or reloading.
- Open Preferences by pressing CTRL-,.
- Go to the Link Tempo MIDI tab.
- In an unused row, select AbletonMCP from the Control Surface dropdown, which was created when the Ableton Remote Script loaded. If you do not see that control surface, go back to the previous step.
-
Leave Input Port and Output Port set to None for the selected row.
This means MIDI I/O is disabled for the selected control surface,
which is fine because the
ableton-mcpMCP server talks to Live via OSC over sockets, not MIDI.
Notice that the Input Ports and Output Ports sections below the Control Surface section do not mention AbletonMCP because it does not use MIDI.
- Press Esc to dismiss the menu.
-
Live's yellow status bar should display a socket listener message
(e.g.,
AbletonMCP listening on 127.0.0.1:11000). If not, restart Live.
Configure Claude Desktop
- Open Claude Desktop.
- Go to Settings by pressing CTRL-,, then select Developer > Edit Config.
-
This opens
claude_desktop_config.json(typically in%APPDATA%\Claude\claude_desktop_config.jsonfor Windows). Add the following MCP server entry:If you have a new installation, your file should look like this now:%APPDATA%\Claude\claude_desktop_config.json fragment"AbletonMCP": { "command": "uvx", "args": [ "ableton-mcp" ] } }%APPDATA%\Claude\claude_desktop_config.json complete{ "mcpServers": { "AbletonMCP": { "command": "uvx", "args": [ "ableton-mcp" ] } } } } - Save the file.
-
Close and reopen Claude Desktop.
The
ableton-mcpMCP server should automatically launch, so you do not need to run it manually.
All Together Now
- Ableton Live should be open now, and the remote script should automatically have loaded.
- In Claude Desktop, start a chat and type:
get session info
-
In the background, Claude Desktop will auto-launch the
ableton-mcpMCP server by issuing the commanduvx ableton-mcp
-
Shortly thereafter, the remote Claude LLM responds to Claude Desktop
with details about the current Ableton Live session,
and they are presented to you.
Here's your Ableton session info: Tempo: 120 BPM Time Signature: 4/4 Tracks: 37 regular tracks + 2 return tracks Master Track: Volume at 0.85, centered panning (0.0) What would you like to do next?
-
In the background, Claude Desktop will auto-launch the
- To examine logs:
-
Check Ableton Live’s
log.txtfor OSC messages by using the Help menu and selecting Open Log Folder. -
Open a CMD or PowerShell session and type the following to see server output.
CMD or PowerShell
$ uvx ableton-mcp 2025-10-26 10:53:15,170 - AbletonMCPServer - INFO - AbletonMCP server starting up 2025-10-26 10:53:15,170 - AbletonMCPServer - INFO - Connecting to Ableton (attempt 1/3)... 2025-10-26 10:53:15,172 - AbletonMCPServer - INFO - Connected to Ableton at localhost:9877 2025-10-26 10:53:15,172 - AbletonMCPServer - INFO - Created new persistent connection to Ableton 2025-10-26 10:53:15,172 - AbletonMCPServer - INFO - Sending command: get_session_info with params: None 2025-10-26 10:53:15,172 - AbletonMCPServer - INFO - Command sent, waiting for response... 2025-10-26 10:53:15,202 - AbletonMCPServer - INFO - Received complete response (229 bytes) 2025-10-26 10:53:15,202 - AbletonMCPServer - INFO - Received 229 bytes of data 2025-10-26 10:53:15,202 - AbletonMCPServer - INFO - Response parsed, status: success 2025-10-26 10:53:15,202 - AbletonMCPServer - INFO - Connection validated successfully 2025-10-26 10:53:15,202 - AbletonMCPServer - INFO - Successfully connected to Ableton on startup
-
Check Ableton Live’s
Usage
Startup
- Launch Ableton Live.
-
Ensure the Ableton Remote Script is loaded in Ableton Live by checking to
see if the AbletonMCP control surface appears under
Settings / Link, Tempo & MIDI.
The
ableton-mcpMCP server does not need to be running for this to work. - Ensure the
ableton-mcpMCP server is configured in Claude Desktop or Cursor. - The connection between Ableton Live and Claude Desktop should automatically be established when you launch Claude Desktop.
Examples
Once running, you can do things like the following:
- Track/Clip Creation: “Create an 80s synthwave track with drums and bass.”
- Automation: “Change input routing for all tracks with 'voice' in the name to mic input.”
- Playback: “Start playback and fire clip in track 2.”
- Generative: “Add a jazz chord progression to the clip in track 1.”
- Session Info: “How many tracks are in the current project?”
Some usage advice: Break complex tasks into smaller steps if timeouts occur. For example, first create a track, then add effects.
Claude Desktop gets clogged up inside very easily. Keep each chat short. If you notice things slowing down, start another chat.
Troubleshooting
| Issue | Cause | Fix |
|---|---|---|
| Control Surface not appearing in Ableton | Wrong folder path or Live version mismatch. |
|
MCP server timeout/unknown command (e.g., /live/song/get/track_names)
| OSC daemon not bridging; common in Live 12. |
|
| Is Port 11000 blocked? | Firewall or another app. |
In Windows Defender Firewall:
|