Skip to main content
Glama
NeanderthalMan

studio-one-mcp

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
STUDIO_ONE_SONGSNoColon-separated list of Studio One song directories.~/Documents/Studio One/Songs
STUDIO_ONE_PROFILENoPath to the Studio One user profile folder.newest …/PreSonus/Studio One * user folder
STUDIO_ONE_MCP_HOMENoDirectory where the bridge mailbox lives.~/Library/Application Support/studio-one-mcp
STUDIO_ONE_MCP_MIDI_PORTNoMIDI output port name used by the bridge.first MIDI output whose name contains IAC

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
song_listB

List Studio One songs on disk (newest first), from ~/Documents/Studio One/Songs or $STUDIO_ONE_SONGS.

song_readA

Read a Studio One song from its .song file: tempo, time signature, markers, arranger sections, tracks with takes/clips (bar, beat and seconds), mixer channels with volume/pan/mute/solo and plug-in inserts, and media files. Reflects the last save, not unsaved edits.

song_historyA

List a song's autosaves and backups in its History folder (newest first). Each path can be passed to song_read to compare versions.

live_statusA

Is a running Studio One reachable through the MCP Bridge device? Explains how to fix it if not.

live_channelsA

List the mixer channels of the song open in Studio One right now, with live volume, pan, mute, solo and record-arm.

live_set_channelA

Change one mixer channel in the running Studio One. Values are Studio One normalised values (volume/pan 0..1, pan 0.5 = centre; mute/solo/recordArmed 0 or 1). Returns before/after.

live_songA

The song open in Studio One right now: title, transport (playing, recording, loop, position, tempo, loop range, precount, preroll), track count and selected tracks. Unlike song_read this includes unsaved changes.

live_tracksB

Tracks of the song open in Studio One right now, with media type, colour, mixer channel, number of takes, selection, and (by default) their events: name, start/end/length in seconds, muted.

live_select_trackA

Select a track by exact name in the running Studio One, so that selection-based commands (live_command) act on it. Replaces the selection unless exclusive is false.

live_transportC

Press a transport button in the running Studio One and return the resulting transport state.

live_set_transportB

Set transport values in the running Studio One: tempo (bpm), playhead position (seconds), loop / precount / preroll on or off. Returns the resulting transport state.

live_markersA

Markers of the song open in Studio One right now: number, position (seconds and bar display) and name (from the last save). Briefly moves the playhead to read them and puts it back; refuses while playing. Only markers 1-20 are visible.

live_add_markerB

Add a marker in the running Studio One at a position in seconds (default: the playhead). The playhead is left where it was.

live_delete_markerB

Delete a marker in the running Studio One, by number (from live_markers) or by exact position in seconds.

live_select_eventsA

Select all events on the named track(s), or on every track, or clear the event selection. Then use live_command for selection-based edits, e.g. Event/Mute Events, Event/Unmute Events, Event/Toggle Mute, Edit/Split at Cursor, Event/Quantize, Event/Transpose Events Up, Track/Activate Next Layer (switch takes), Edit/Undo.

live_set_loopA

Set the loop range in the running Studio One (start/end in seconds or as bars like "9.1.1.0"), and optionally turn looping on or off. Returns the transport state.

live_takesA

A track's takes (layers) in the running Studio One: list them, switch to the next/previous take, or unpack all takes to separate tracks. Returns the number of takes and the names of the clips now playing. Takes do not wrap: next on the last take (or previous on the first) changes nothing.

live_saveA

Save the song open in Studio One (File/Save), or save it as a new version (File/Save New Version) to keep the old one.

live_undoC

Undo the last edit(s) in the running Studio One.

live_redoC

Redo edit(s) in the running Studio One.

live_track_stateA

Toggle a track's arm / monitor / mute / solo, hide it, or duplicate it, by track name; showAll unhides every track. Returns the track's mixer channel afterwards. The track selection is restored. Mute is not on Studio One's undo stack: revert it by toggling again, since live_undo would undo the edit before it.

live_edit_eventsA

Edit all events on one track in the running Studio One: mute, unmute, toggleMute, quantize, transposeUp/Down (instrument parts), split / trimStart / trimEnd at a time (seconds or bars), merge, delete. Returns the track's events afterwards. Use live_undo to revert.

live_add_trackA

Add a track to the song open in Studio One: audioMono (default), audioStereo, instrument, folder or automation.

live_metersA

Peak meters of every mixer channel in dB (-144 = silence). With duration_ms, samples repeatedly (e.g. while playing) and returns the highest peak per channel, plus which channels clipped (above -0.1 dB).

live_commandA

Run any Studio One command by category and name, exactly as listed in Studio One → Keyboard Shortcuts (e.g. Transport/Start, Transport/Stop, Transport/Record, Edit/Undo, File/Save, View/Console). Use live_list_commands to discover names. With check_only, only reports whether the command is currently enabled, without running it.

live_list_commandsA

List Studio One commands available to live_command (about 1,000 on Studio One 5), optionally filtered by a substring. with_state adds whether each is enabled right now; many need a selection or an open editor.

live_evalA

Run JavaScript inside Studio One's script engine and return the result (host objects are described to a depth). Globals: Host, PreSonus, component, describe. Only works when the bridge was installed with --allow-eval. Useful for exploring the undocumented object model, e.g. Host.Objects.getObjectByUrl('://studioapp/DocumentManager'). Do not throw, and check that a host member exists (typeof) before calling it: either one pops a modal Scripting Error dialog in Studio One.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.4/5.0

Scored across 27 tools

Disambiguation4/5

Most tools target clearly distinct resources (markers, channels, tracks, events, transport), and descriptions are detailed. However, the generic live_command overlaps with many specific wrappers (live_undo, live_transport, live_edit_events), and live_set_transport/live_set_loop/live_transport all manipulate transport state, creating some potential misselection.

Naming Consistency4/5

All names are snake_case with predictable live_ and song_ domain prefixes, which makes grouping clear. Within live_, however, some tools are noun-only getters (live_song, live_channels, live_meters) while others follow verb_noun (live_add_marker, live_set_channel), so the convention is mostly but not perfectly uniform.

Tool Count2/5

With 27 tools, the set is above the 15-tool sweet spot and crosses the 25-tool threshold that signals an overly heavy surface. Mergeable pairs like live_undo/live_redo, overlapping transport setters (live_transport, live_set_transport, live_set_loop), and a catch-all live_command inflate the count beyond what the domain strictly needs.

Completeness4/5

The surface covers live control (status, transport, markers, channels, tracks, events, takes, meters, save, undo/redo) plus offline song file inspection, giving solid lifecycle coverage. Gaps remain in track deletion/rename, plug-in parameter writing, and MIDI note editing, though live_command can bridge some of these.

Maintenance

ActivityMaintained
ResponsivenessNo issues