Skip to main content
Glama
LofiFren

ableton-mcp-lofifren

by LofiFren

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_session_infoA

Get detailed information about the current Ableton session

get_track_infoB

Get detailed information about a specific track in Ableton.

Parameters:

  • track_index: The index of the track to get information about

create_midi_trackA

Create a new MIDI track in the Ableton session.

Parameters:

  • index: The index to insert the track at (-1 = end of list)

set_track_nameB

Set the name of a track.

Parameters:

  • track_index: The index of the track to rename

  • name: The new name for the track

create_clipA

Create a new MIDI clip in the specified track and clip slot.

Parameters:

  • track_index: The index of the track to create the clip in

  • clip_index: The index of the clip slot to create the clip in

  • length: The length of the clip in beats (default: 4.0)

add_notes_to_clipB

Add MIDI notes to a clip.

Parameters:

  • track_index: The index of the track containing the clip

  • clip_index: The index of the clip slot containing the clip

  • notes: List of note dictionaries, each with pitch, start_time, duration, velocity, and mute

set_clip_nameB

Set the name of a clip.

Parameters:

  • track_index: The index of the track containing the clip

  • clip_index: The index of the clip slot containing the clip

  • name: The new name for the clip

set_tempoB

Set the tempo of the Ableton session.

Parameters:

  • tempo: The new tempo in BPM

load_instrument_or_effectC

Load an instrument or effect onto a track using its URI.

Parameters:

  • track_index: The index of the track to load the instrument on

  • uri: The URI of the instrument or effect to load (e.g., 'query:Synths#Instrument%20Rack:Bass:FileId_5116')

fire_clipC

Start playing a clip.

Parameters:

  • track_index: The index of the track containing the clip

  • clip_index: The index of the clip slot containing the clip

stop_clipC

Stop playing a clip.

Parameters:

  • track_index: The index of the track containing the clip

  • clip_index: The index of the clip slot containing the clip

start_playbackB

Start playing the Ableton session.

stop_playbackA

Stop playing the Ableton session.

get_clip_notesB

Get all MIDI notes from a clip.

Parameters:

  • track_index: The index of the track containing the clip

  • clip_index: The index of the clip slot containing the clip

Returns note data including pitch, start_time, duration, velocity, and mute for each note.

remove_notes_from_clipA

Remove MIDI notes from a clip within a specified range. By default removes ALL notes. Use parameters to target specific ranges.

Parameters:

  • track_index: The index of the track containing the clip

  • clip_index: The index of the clip slot containing the clip

  • from_time: Start time in beats (default: 0.0 = beginning)

  • from_pitch: Lowest MIDI pitch to remove (default: 0)

  • time_span: Duration in beats to clear (default: 99999.0 = all)

  • pitch_span: Number of pitches above from_pitch to clear (default: 128 = all)

delete_clipB

Delete a clip from a clip slot, leaving the slot empty.

Parameters:

  • track_index: The index of the track containing the clip

  • clip_index: The index of the clip slot to clear

duplicate_clip_toA

Duplicate a clip to another clip slot on the same track.

Parameters:

  • track_index: The index of the track containing the clip

  • clip_index: The source clip slot index

  • target_clip_index: The destination clip slot index (must be empty)

set_track_volumeB

Set the volume of a track.

Parameters:

  • track_index: The index of the track

  • volume: Volume level from 0.0 (silent) to 1.0 (max). Default is ~0.85.

set_track_panA

Set the panning of a track.

Parameters:

  • track_index: The index of the track

  • pan: Panning from -1.0 (full left) to 1.0 (full right). 0.0 is center.

set_track_sendA

Set a send amount on a track (for routing to return tracks).

Parameters:

  • track_index: The index of the track

  • send_index: The index of the send (0 = Send A, 1 = Send B, etc.)

  • value: Send amount from 0.0 (none) to 1.0 (full)

fire_sceneB

Fire (launch) a scene, triggering all clips in that row across all tracks.

Parameters:

  • scene_index: The index of the scene to fire (0-based)

create_audio_trackB

Create a new audio track in the Ableton session.

Parameters:

  • index: The index to insert the track at (-1 = end of list)

undoA

Undo the last action in Ableton.

batch_commandsA

Execute a list of commands in a single round-trip to Ableton.

The whole batch runs atomically inside one main-thread closure, so a single subsequent undo reverts the entire sequence. Execution stops at the first failure and partial results are returned.

Parameters:

  • commands: list of {"type": str, "params": dict}. Allowed types are any modifying or read-only command (e.g. create_midi_track, add_notes_to_clip, set_track_volume). Nested batch_commands is not allowed.

Returns a JSON object with:

  • results: list of per-command {"status", "result" or "message"}

  • executed: how many ran (including the failing one if any)

  • total: how many were submitted

  • failed_at: index of the failure or null

  • error: failure message or null

get_browser_treeA

Get a hierarchical tree of browser categories from Ableton.

Parameters:

  • category_type: Type of categories to get ('all', 'instruments', 'sounds', 'drums', 'audio_effects', 'midi_effects')

get_browser_items_at_pathB

Get browser items at a specific path in Ableton's browser.

Parameters:

  • path: Path in the format "category/folder/subfolder" where category is one of the available browser categories in Ableton

load_drum_kitC

Load a drum rack and then load a specific drum kit into it.

Parameters:

  • track_index: The index of the track to load on

  • rack_uri: The URI of the drum rack to load (e.g., 'Drums/Drum Rack')

  • kit_path: Path to the drum kit inside the browser (e.g., 'drums/acoustic/kit1')

add_chord_progressionA

Write a chord progression into an existing MIDI clip in one call.

Parameters:

  • track_index, clip_index: target clip (must already exist; use create_clip_with_notes to create the clip in the same call)

  • chords: list of chord symbols, e.g. ["Cm", "Fm", "G7", "Cm"] or ["Fmaj7", "Em7", "Dm7", "Cmaj7"]

  • rhythm: how long each chord lasts — "whole" (4 beats), "half", "quarter", "eighth", "sixteenth"

  • octave: middle octave for the chord roots (4 = middle C area)

  • velocity: 0-127 MIDI velocity for every note

add_scale_runA

Write a scalar run (sequence of notes from a scale) into an existing clip.

Parameters:

  • scale: e.g. "C minor", "F# dorian", "Eb major pentatonic"

  • start_beat, end_beat: time range in the clip

  • direction: "up", "down", or "updown"

  • note_duration: length of each note in beats (default 1/16)

  • octave: starting octave (4 = middle C)

  • velocity: 0-127

Generates ascending/descending notes from the chosen scale, packed into the [start_beat, end_beat) range with note_duration per note.

add_drum_patternA

Write a preset drum pattern into an existing clip. Patterns are defined in 1-bar (4 beats) building blocks and tile to fill length.

Parameters:

  • pattern: "four_on_floor" | "trap" | "breakbeat" | "boom_bap"

  • length: clip length in beats (pattern tiles to fill this)

  • kit_map: optional override mapping drum names ("kick", "snare", "hat", "open_hat", "clap", "tom") to MIDI pitches. Defaults to General MIDI drum mapping (kick=36, snare=38, hat=42, open_hat=46).

  • velocity: 0-127

quantize_clipA

Quantize all notes in a clip to a grid by snapping each note's start_time to the nearest grid line.

Parameters:

  • grid: "1/4" | "1/8" | "1/16" | "1/32"

Implementation: read existing notes, round start times, then in one batch remove the old notes and write the new ones. The whole edit is atomic from Live's perspective.

list_personalitiesA

List every available 'personality' style profile, grouped by role.

Roles:

  • solo — melodic / lead lines (Coltrane, Kenny G, Oscar Peterson, Miles Davis, Charlie Parker, Wayne Shorter)

  • comp — chord voicings / comping (Bill Evans rootless, McCoy Tyner quartal, Herbie Hancock)

  • bass — bass lines (James Jamerson, Jaco Pastorius, Pino Palladino)

  • drums — drum patterns (Questlove pocket, Tony Williams swing, Vinnie Colaiuta polyrhythms)

Each personality declares a tempo_sweet_spot and a comfortable tempo_range; outside that range the generators emit a warning and automatically scale density / swing to compensate.

Use the key field as the personality argument to add_personality (the unified tool) or add_personality_solo (legacy).

add_personalityA

Generate a part in the style of a named personality and write it into an existing MIDI clip. The personality's role (solo / comp / bass / drums) determines what kind of part is generated — see list_personalities.

Parameters:

  • track_index, clip_index: target clip (must already exist)

  • personality: one of the keys returned by list_personalities

  • chord_progression: list of chord symbols, e.g. ["Cm","Ab","Eb","Bb"]. Drum personalities ignore chord content but still use the length.

  • bars_per_chord: how many 4/4 bars each chord lasts (default 1)

  • tempo: BPM for tempo-aware generation. If omitted, the current session tempo is queried via get_session_info. The personality's profile will warn (but still produce output) if this is outside its comfortable range, and generators will scale density / swing to compensate.

  • octave_offset: shift the personality's natural register up/down N octaves

  • seed: optional RNG seed for reproducible output. Default None = a different solo every call.

add_personality_soloA

Legacy alias for add_personality restricted to solo personalities. Prefer add_personality (which auto-dispatches by role). Kept so older callers don't break.

add_blended_personality_soloA

Generate a solo from a blended personality — interpolated between two real personalities. Currently solo-only.

Parameters:

  • personality_a, personality_b: keys of two solo personalities

  • ratio: 0.0 = all A, 1.0 = all B, 0.5 = perfectly mixed

  • all other arguments: same as add_personality

Numeric profile fields (density, swing, range bounds, velocity range, chord-tone emphasis, etc.) are linearly interpolated. Categorical pools (scale modes, phrase arc) take from A when ratio < 0.5 and B otherwise.

transpose_clipA

Transpose every note in a clip by semitones (positive = up, negative = down). Notes that would land outside the MIDI range [0, 127] are clamped.

Implementation: read notes, mutate pitches, batch(remove + add).

set_time_signatureA

Set the song's time signature.

Parameters:

  • numerator: top number (1-99)

  • denominator: bottom number, must be a power of 2 (1, 2, 4, 8, 16)

set_clip_loopA

Set a clip's loop region (in beats) and whether the clip loops.

Parameters:

  • track_index, clip_index: which clip

  • loop_start: loop start in beats

  • loop_end: loop end in beats (must be > loop_start)

  • loop_on: enable looping

set_clip_lengthA

Resize a clip by moving its end_marker. Length is measured in beats from the clip's start_marker.

set_track_armC

Arm or disarm a track for recording.

set_track_muteC

Mute or unmute a track.

set_track_soloC

Solo or unsolo a track.

delete_trackA

Delete a track. NOTE: deleting a track shifts the indices of every track after it down by one. When deleting multiple tracks in a batch, delete in descending index order to avoid index drift.

set_master_volumeA

Set the master track volume.

Parameters:

  • volume: 0.0 (silent) to 1.0 (max). Default unity is ~0.85.

set_device_parameterA

Set a device parameter on a track using a RAW Live value (not normalized). The value is clamped to the parameter's min/max. Use get_track_devices to discover the parameter's index, name, and value range.

Parameters:

  • track_index: which track the device is on

  • device_index: position of the device in the track's device chain (0-based)

  • parameter_index: position of the parameter in the device (0-based; index 0 is usually the on/off toggle)

  • value: raw Live value, e.g. 1000.0 for a filter cutoff in Hz

create_sceneB

Create a new scene at the given index (-1 = end of list).

set_scene_nameB

Set a scene's name.

set_scene_tempoB

Set a per-scene tempo. Firing this scene will set the song tempo to this value.

search_browserA

Search the Ableton browser by name. Walks the browser tree depth-first and returns up to 50 matches whose names contain the query (case-insensitive).

Parameters:

  • query: substring to match (e.g. "808", "Operator", "Reverb")

  • category: "all" | "instruments" | "sounds" | "drums" | "audio_effects" | "midi_effects"

Returns a list of matches with name, uri, path, and is_loadable. Pass the uri to load_browser_item to load the result onto a track.

load_instrument_by_nameA

Convenience composite: search the browser by name and load the first loadable match onto the given track. Equivalent to calling search_browser then load_browser_item yourself.

Parameters:

  • track_index: where to load the instrument

  • name: substring of the instrument name (e.g. "Operator", "808 Core")

  • category: which browser category to search; defaults to "instruments"

browse_for_roleA

Walk Ableton's browser for instruments suited to a specific role and return quality-ranked candidates.

Roles:

  • drums — searches drum racks and drum kits

  • bass — bass instruments (electric, fretless, upright, slap)

  • lead — synth leads

  • keys — pianos / Rhodes / Wurlis / organs / electric pianos

  • pad — pads / atmospheres

  • brass — trumpet / sax / horn

  • guitar — clean guitar / jazz guitar

Each item is scored — Instrument Racks (.adg) > Device Presets (.adv) > bare devices > raw samples (.wav). One-shot junk and FX-only items are filtered out. Results are sorted best-first so results[0] is the smartest pick.

Use this when you don't know what's in the user's library and want a quick menu of options for a given track role.

load_instrument_for_personalityA

Load the best Ableton instrument for the named personality onto a track.

Each personality has a BROWSER_HINTS list (e.g. Coltrane → ['tenor sax', 'saxophone', 'sax', 'brass']). This tool walks those hints in order, runs a quality-scored search_browser for each, and loads the highest-scored Instrument Rack / Device Preset across all hints onto the given track.

The Live API REPLACES the existing instrument when you load another one, so this is also a clean way to swap out a placeholder Operator for the "right" instrument for a personality.

Parameters:

  • track_index: target track

  • personality: any key from list_personalities

  • prefer_preset: rank Instrument Racks above raw samples (default True)

Returns the loaded item's name, path, score, and which hint matched.

get_track_devicesA

List the devices loaded on a track, including each device's parameters with their current value, min, and max. Use this to discover parameter indices and ranges before calling set_device_parameter.

create_trackB

Create a track with optional name, instrument, volume, and pan in a single round-trip.

Parameters:

  • type: "midi" or "audio"

  • name: optional track name

  • instrument_uri: optional browser URI to load (use search_browser first)

  • volume: optional 0.0-1.0 mixer volume

  • pan: optional -1.0 to 1.0 panning

  • index: insert position (-1 = end)

create_clip_with_notesA

Create a MIDI clip and populate it with notes in a single batched call.

Parameters:

  • track_index, clip_index: where to put the clip

  • length: clip length in beats

  • notes: list of note dicts {pitch, start_time, duration, velocity?, mute?}

  • name: optional clip name

duplicate_clipA

Duplicate a MIDI clip to any other track + slot. Unlike the upstream duplicate_clip_to, this works across tracks. Both tracks must be MIDI tracks; the destination slot must be empty.

setup_sessionA

Bootstrap an Ableton session in (effectively) one round-trip: set tempo, set time signature, and create a list of tracks with optional names, instruments, volume, and pan.

Parameters:

  • tempo: BPM (e.g. 120.0)

  • time_signature: [numerator, denominator], e.g. [4, 4] or [6, 8]

  • tracks: list of dicts. Each entry may contain:

    • type: "midi" or "audio" (default "midi")

    • name: optional track name

    • instrument_uri: optional browser URI (load via search_browser first)

    • volume: optional 0.0-1.0

    • pan: optional -1.0 to 1.0

Tracks are created in order at the END of the existing track list. Returns a JSON summary of every step.

get_arrangement_infoA

BETA: Report arrangement-view state — capabilities, song length, loop region, locators (cue points), and per-track arrangement clips.

The capabilities field tells you which BETA operations this Live version supports. can_duplicate_to_arrangement is the most important one — it gates add_clip_to_arrangement and bounce_session_to_arrangement.

add_clip_to_arrangementA

BETA: Copy a session clip onto the arrangement timeline at the given time (in beats). Requires a Live version that exposes Track.duplicate_clip_to_arrangement. Use get_arrangement_info first to confirm support.

set_arrangement_loopA

Set the arrangement loop region (in beats) and whether the loop is enabled. Stable across Live 11+.

add_arrangement_locatorA

Add a named locator (cue point) at the given arrangement time. Useful for marking verse / chorus / bridge boundaries.

If a locator already exists at that exact time, this only renames it.

bounce_session_to_arrangementA

BETA: Render a sequence of scenes onto the arrangement timeline. For each scene in scene_order (in order), every clip in that scene's row is dropped onto the arrangement at the running time cursor. The cursor advances by bar_length beats after each scene.

This is the closest thing to a one-call "session sketch → arrangement" flow. Requires a Live version that supports Track.duplicate_clip_to_arrangement.

Parameters:

  • scene_order: list of scene indices in playback order, e.g. [0, 0, 1, 2, 1, 3]

  • bar_length: how many beats each scene occupies on the timeline (default 4)

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/LofiFren/ableton-mcp-lofifren'

If you have feedback or need assistance with the MCP directory API, please join our Discord server