Live MCP exposes six tools through the Model Context Protocol. Each tool maps to an operation on the Live Object Model (LOM) inside Ableton Live.
All tools use LOM paths to address objects. Paths are space-separated strings starting from a root object (live_set or live_app). For example, live_set tracks 0 devices 1 parameters 3 addresses parameter 3 of device 1 on the first track.
get_property
Read a property from a Live Object Model object.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
path | string | yes | LOM path to the object (e.g. "live_set", "live_set tracks 0") |
property | string | yes | Property name to read (e.g. "tempo", "name") |
Returns: { "value": <any> } — the current value of the property.
Example:
{
"path": "live_set",
"property": "tempo"
}
Response:
{
"value": 128.0
}
set_property
Set a property on a Live Object Model object. The value must be a valid JSON string that will be parsed before being sent to Ableton.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
path | string | yes | LOM path to the object (e.g. "live_set", "live_set tracks 0") |
property | string | yes | Property name to write (e.g. "tempo", "name") |
value | string | yes | Value as a JSON string (e.g. "120.0", "\"My Track\"", "true") |
Returns: { "success": true } on success.
Example:
{
"path": "live_set",
"property": "tempo",
"value": "135.0"
}
Response:
{
"success": true
}
Note: Not all properties are writable. Check the LOM reference for read/write status. Attempting to set a read-only property will return an error.
call_function
Call a function on a Live Object Model object. Functions perform actions like creating tracks, firing clips, or deleting devices.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
path | string | yes | LOM path to the object (e.g. "live_set", "live_set tracks 0 clip_slots 2 clip") |
function | string | yes | Function name to call (e.g. "fire", "stop", "create_midi_track") |
args | string | no | Arguments as a JSON array string (e.g. "[1, \"hello\"]") |
Returns: { "success": true } on success.
Example — fire a clip:
{
"path": "live_set tracks 0 clip_slots 0 clip",
"function": "fire"
}
Example — create a MIDI track at index 2:
{
"path": "live_set",
"function": "create_midi_track",
"args": "[2]"
}
Response:
{
"success": true
}
get_children
List the child objects available at a given LOM path. This is your primary tool for discovering and navigating the object hierarchy.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
path | string | yes | LOM path to the parent object (e.g. "live_set", "live_set tracks 0") |
Returns: { "children": string[] } — an array of child names or paths.
Example:
{
"path": "live_set"
}
Response:
{
"children": [
"tracks",
"return_tracks",
"master_track",
"scenes",
"cue_points",
"groove_pool"
]
}
Tip: When a tool call fails because of an invalid path, use get_children to walk the hierarchy step by step and find the correct path.
observe
Subscribe to changes on a Live Object Model property. When the property value changes in Ableton (whether through user interaction, automation, or another tool call), the bridge sends a notification back through the MCP server.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
path | string | yes | LOM path to the object (e.g. "live_set", "live_set tracks 0") |
property | string | yes | Property name to observe (e.g. "tempo", "name") |
Returns: { "subscriptionId": string } — a unique ID for this subscription, needed to unsubscribe later.
Notifications: When the observed property changes, the bridge sends a notification with this shape:
{
"notification": "property_changed",
"subscriptionId": "sub-1",
"path": "live_set",
"property": "tempo",
"value": 140.0
}
Example:
{
"path": "live_set",
"property": "tempo"
}
Response:
{
"subscriptionId": "sub-1"
}
unobserve
Unsubscribe from a previously observed property. Use the subscription ID returned by observe.
Parameters:
| Name | Type | Required | Description |
|---|---|---|---|
subscriptionId | string | yes | The subscription ID returned from a previous observe call |
Returns: { "success": true } on success.
Example:
{
"subscriptionId": "sub-1"
}
Response:
{
"success": true
}
LOM Path Quick Reference
| Path | Object |
|---|---|
live_set | The Song (root of the session) |
live_app | The Application |
live_set tracks N | Track at index N |
live_set return_tracks N | Return track at index N |
live_set master_track | The master track |
live_set scenes N | Scene at index N |
live_set tracks N clip_slots M clip | Clip in slot M of track N |
live_set tracks N devices M | Device at index M on track N |
live_set tracks N devices M parameters P | Parameter P of device M on track N |
live_set tracks N mixer_device | Mixer (volume, pan, sends) for track N |
Further reading
For the complete list of properties, functions, and classes available in the Live Object Model, see the Cycling ‘74 LOM reference.