Skip to main content
Glama

Ableton MCP

MCP (Model Context Protocol) server for controlling Ableton Live. Query tracks, analyze sessions, and export stems via AI assistants like Claude.

macOS only - Uses AppleScript for GUI automation.

Features

Query Tools

  • test_connection - Verify Ableton Live and AbletonOSC are running

  • list_tracks - List all tracks with optional clip counts

  • list_groups - List all group/folder tracks

  • get_track_info - Get detailed info about a specific track

  • find_track - Search tracks by name

Control Tools

  • select_track_by_index - Select a track in Live

  • set_export_range - Set the loop/punch range for export

Export Tools (macOS only)

  • prepare_track_for_export - Select track and set range from clips

  • export_selected_track - Trigger export via GUI automation

Related MCP server: Ableton MCP

Requirements

  • macOS (for export features)

  • Python 3.10+

  • Ableton Live 11+ with AbletonOSC installed

  • Accessibility permissions for Terminal/Python (for export)

Installation

1. Install AbletonOSC

cd ~/Downloads
git clone https://github.com/ideoforms/AbletonOSC.git
cp -r AbletonOSC ~/Music/Ableton/User\ Library/Remote\ Scripts/

Then in Ableton Live:

  1. Preferences > Link/Tempo/MIDI

  2. Control Surface > Select "AbletonOSC"

2. Install ableton-mcp

cd ~/mcps/src/ableton-mcp
pip install -e .

3. Configure Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "ableton": {
      "command": "python",
      "args": ["-m", "server"],
      "cwd": "/path/to/ableton-mcp"
    }
  }
}

4. Grant Accessibility Permissions (for export)

System Preferences > Privacy & Security > Accessibility > Add Terminal (or your Python environment)

Usage Examples

"List all tracks in my Ableton session"
"Find tracks containing 'bass'"
"Prepare track 57 for export"
"Export the selected track"

Architecture

┌─────────────┐       OSC        ┌─────────────┐
│  MCP Server │ ───────────────▶ │  Ableton    │
│  (FastMCP)  │ ◀─────────────── │  Live       │
└─────────────┘    port 11000    └─────────────┘
       │
       │ AppleScript (export only)
       ▼
┌─────────────┐
│  GUI Auto   │
│  (macOS)    │
└─────────────┘

Limitations

  • Export is macOS only - Uses AppleScript for GUI automation

  • Export requires Accessibility permissions

  • AbletonOSC must be enabled each time Live starts

Credits

License

MIT

Available Tools

9 tools
export_selected_trackA
Export the currently selected track using GUI automation.

IMPORTANT: Requires Accessibility permissions for Terminal/Python.
macOS only.

Args:
    output_folder: Where to save the exported file

Returns:
    Status message

Inputs: output_folder. Returns: result

find_trackB
Find tracks by name (partial match).

Args:
    name: Text to search for in track names

Returns:
    List of matching tracks

Inputs: name (required). Returns: result

get_track_infoB
Get detailed information about a specific track.

Args:
    track_index: The index of the track (0-based)

Returns:
    Track details including name, type, mute status, and clips

Inputs: track_index (required). Returns: result

list_groupsA

List all group tracks (folders) in the current Live session.

Inputs: no named parameters. Returns: result

list_tracksC
List all tracks in the current Ableton Live session.

Args:
    include_clips: If True, include clip count for each track

Returns:
    Formatted list of tracks with their properties

Inputs: include_clips. Returns: result

prepare_track_for_exportA
Prepare a track for export by selecting it and setting the loop range
based on its audio clips.

Args:
    track_index: The index of the track to prepare

Returns:
    Status with range info, ready for export_selected_track

Inputs: track_index (required). Returns: result

select_track_by_indexB
Select a track in Ableton Live.

Args:
    track_index: The index of the track to select (0-based)

Returns:
    Confirmation message

Inputs: track_index (required). Returns: result

set_export_rangeC
Set the loop/punch range for export.

Args:
    start_beats: Start position in beats
    length_beats: Length in beats

Returns:
    Confirmation with time info

Inputs: start_beats (required), length_beats (required). Returns: result

test_connectionA

Test if Ableton Live is running and AbletonOSC is enabled.

Inputs: no named parameters. Returns: result

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.5/5.0

    Scored across 9 tools

    Disambiguation4/5

    Most tools have distinct purposes, but there is some overlap between 'find_track' and 'list_tracks' that could cause confusion, as both involve retrieving track information. However, their specific functions (search vs. list all) are clarified in descriptions, preventing major misselection issues.

    Naming Consistency5/5

    All tool names follow a consistent snake_case pattern with clear verb_noun structure, such as 'export_selected_track', 'find_track', and 'list_tracks'. This predictability makes it easy for agents to understand and use the toolset without naming confusion.

    Tool Count5/5

    With 9 tools, the server is well-scoped for managing Ableton Live tracks, covering operations like listing, finding, selecting, preparing, and exporting. Each tool serves a specific role without unnecessary redundancy, making the count appropriate for the domain.

    Completeness4/5

    The toolset provides good coverage for track management and export workflows, including preparation and range setting. However, there are minor gaps, such as no tools for modifying track properties (e.g., mute, volume) or handling non-track elements like clips or effects, which agents might need to work around.

    Maintenance

    ActivityInactive
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers