Skip to main content
Glama
Boyan253

FL Studio 2025 AI Bridge

by Boyan253

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
FLMCP_MIDI_PORTNoName of the loopMIDI port used for MIDI-wake mechanism.loopMIDI
FLMCP_TRANSPORTNoTransport mode for FL Studio bridge: 'file' (recommended for FL Studio 2025) or default socket-based.file

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": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
fl_pingA

Report health of BOTH bridges.

Returns: { "midi_bridge": {"online": bool, ...}, "piano_roll": {"installed": bool, ...}, "available_capabilities": [...], }

fl_reconnectA

Drop and reopen the TCP connection to the MIDI bridge.

fl_bridge_infoA

Detailed info about the MIDI bridge (fails if it's offline).

fl_call_rawB

Escape hatch: invoke any action the MIDI bridge accepts with arbitrary params.

transport_playA

Start or toggle playback (FL Studio's Play button).

transport_stopA

Stop playback.

transport_recordA

Toggle record arm state.

transport_statusA

Get is_playing, is_recording, position, loop mode, tempo, signature.

transport_set_positionB

Seek to a specific position in the song.

transport_song_lengthA

Return song length in ticks, seconds, ms, bars, steps.

transport_set_loop_modeA

Set FL Studio's song/pattern loop mode.

transport_set_playback_speedA

Set the playback speed multiplier (0.25..4.0).

transport_set_tempoA

Set the project tempo in BPM. Uses processRECEvent for proper undo history.

transport_tap_tempoA

Send a tap-tempo event (accumulates to set BPM).

transport_set_time_signatureB

Set project time signature (e.g. 4/4, 3/4, 7/8).

transport_toggle_metronomeA

Toggle metronome on/off.

transport_toggle_countdown_before_recordingB

Toggle 'countdown before recording'.

transport_jogA

Nudge playhead by steps 16th-notes (negative = backward).

pattern_countA

Return total pattern count.

pattern_currentA

Return index + name of currently selected pattern.

pattern_listA

Return list of all patterns: [{index, name, color, length}].

pattern_selectA

Jump to pattern by index (1-based in FL).

pattern_createA

Create a new empty pattern. Returns {index, name}.

pattern_rename

Rename an existing pattern.

pattern_set_color

Set pattern color. Accepts '#RRGGBB' or 'rgb(r,g,b)'.

pattern_cloneC

Clone a pattern (copy all notes & channel grid bits).

pattern_deleteB

Delete a pattern by index.

pattern_set_lengthC

Set pattern length in bars.

pattern_find_by_nameA

Find a pattern by exact name (case-insensitive). Returns {index, name} or null.

pattern_jump_to_nextB

Select the next pattern in the list.

pattern_jump_to_previousA

Select the previous pattern in the list.

channel_countB

Total channel count (global = across all groups).

channel_infoA

Detailed info on one channel: name/volume/pan/pitch/color/mute/solo/fx_route/type.

channel_allB

List of all channels with basic info.

channel_selectedB

Return currently selected channel (or null).

channel_selectB

Select channel (exclusive=True deselects others).

channel_set_volumeB

Set channel volume (0.0..1.0, where 0.78 ≈ 0 dB).

channel_set_panC

Set channel pan (-1.0..1.0).

channel_set_pitchA

Set channel pitch offset in semitones (-120..120).

channel_muteB

Mute / unmute / toggle (None = toggle).

channel_soloB

Solo / unsolo / toggle (None = toggle).

channel_set_nameC

Rename a channel.

channel_set_colorB

Set channel color. Accepts '#RRGGBB' or 'rgb(r,g,b)'.

channel_route_to_mixerC

Route a channel to a given mixer insert track.

channel_trigger_noteA

Trigger a one-shot MIDI note on the channel (live preview, not recorded).

channel_get_grid_bitB

Read a single step-sequencer bit (position is 0-based step within the pattern).

channel_set_grid_bitC

Set a single step-sequencer bit.

channel_get_step_sequenceB

Read the full step sequence for a channel (optionally for a specific pattern).

channel_set_step_sequenceB

Overwrite step sequence. steps is a list of 0/1 ints (any length up to pattern length).

channel_clear_step_sequenceA

Clear all step-sequencer bits for the channel (in the current or specified pattern).

channel_quick_quantizeC

Quantize the channel's notes in the current pattern.

mixer_countA

Number of mixer tracks (incl master @ index 0).

mixer_track_infoA

Detailed info on a mixer track (name, vol, pan, mute, solo, arm, color, stereosep, sends, fx slots).

mixer_all_tracksC

List of all mixer tracks.

mixer_set_volumeB

Set mixer track volume (0.0..1.0).

mixer_set_panA

Set mixer track pan (-1.0..1.0).

mixer_muteB

Mute / unmute / toggle (None = toggle).

mixer_soloC

Solo / unsolo / toggle.

mixer_armC

Arm track for recording.

mixer_set_nameC

Rename a mixer track.

mixer_set_colorA

Set mixer track color ('#RRGGBB' or 'rgb(r,g,b)').

mixer_set_stereo_separationB

Set mixer track stereo separation (-1.0..1.0).

mixer_set_send_levelB

Set send level from one mixer track to another (0..1).

mixer_routeC

Enable or disable a mixer route (send) between two tracks.

mixer_fx_slotsA

List plugin IDs in the 10 FX slots of a mixer track (-1 = empty).

mixer_selectC

Focus / select a mixer track.

mixer_get_eqB

Return 3-band mixer EQ (gains + frequencies).

mixer_set_eq_bandA

Set one band of the mixer EQ. band=0|1|2 (low/mid/high). gain -1..1, freq 0..1 (normalised).

mixer_link_to_channelC

Link a channel to a mixer track. mode='replace'|'add'.

plugin_is_validB

Check if a plugin slot has a valid plugin loaded.

plugin_nameD

Plugin display name.

plugin_param_countC

Return number of automatable parameters.

plugin_paramsC

List parameters (paginated): [{idx, name, value, value_string}].

plugin_get_paramC

Get value of a single parameter.

plugin_set_paramC

Set a single parameter (0.0..1.0 normalised).

plugin_find_paramC

Find a parameter by substring (case-insensitive).

plugin_preset_countC

Number of built-in presets for plugin.

plugin_next_presetC

Advance to the next preset.

plugin_prev_presetC

Go back to the previous preset.

plugin_set_presetC

Load preset by numeric index.

plugin_show_editorC

Show/hide the plugin editor window (None = toggle).

plugin_list_mixer_trackA

List all loaded plugins in every FX slot of a mixer track.

playlist_track_countC

Playlist track count.

playlist_track_infoB

Info on a playlist track: name, color, mute, solo, height, group.

playlist_all_tracksB

List of all playlist tracks.

playlist_set_track_nameC

Rename a playlist track.

playlist_set_track_colorB

Set playlist track color ('#RRGGBB').

playlist_mute_trackC

Mute/unmute a playlist track.

playlist_solo_trackC

Solo a playlist track.

playlist_list_clipsA

List all clips in the playlist (optionally filter to one track).

playlist_place_patternB

Place a pattern clip on a playlist track at a given bar position.

playlist_delete_clipA

Delete the clip on a track starting at the given bar position.

playlist_refreshA

Force playlist repaint (use after bulk edits).

playlist_list_markersA

Return all timeline markers: [{pos_bars, name, mode}].

playlist_add_markerC

Add a playlist marker.

playlist_delete_markerB

Remove a playlist marker by index.

arrangement_currentA

Return current arrangement index + name.

arrangement_listA

List all arrangements.

arrangement_selectC

Switch to a different arrangement.

arrangement_jump_markerA

Jump playhead to next (+1) or previous (-1) marker within current arrangement.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription
statusBridge + transport quick status.
projectFull project metadata: tempo, signature, channels, mixer, patterns, selection.
transportLive transport state (is_playing, position, tempo, loop mode).
channelsFull channel rack as JSON.
mixerAll mixer tracks as JSON.
patternsAll patterns in the project.
playlistPlaylist tracks + clips.

TDQS

B3/5.0

Scored across 157 tools

Disambiguation5/5

Each tool falls into a clear domain (e.g., arrangement, audio, channel, mixer, pattern, piano_roll, playlist, plugin, project, transport, UI, voice, gen) with distinct purposes. Even overlapping areas like audio analysis vs transcription are separated by target output (analysis data vs piano roll notes). The drum pattern tools differentiate step sequencer vs piano roll output via name and description.

Naming Consistency5/5

All tools follow a consistent snake_case convention with a domain prefix (e.g., arrangement_, audio_, channel_, mixer_) and a descriptive action (e.g., _list, _select, _set_volume). No mixing of camelCase or inconsistent verb styles. The naming pattern is predictable and aids discoverability.

Tool Count4/5

157 tools is high, but FL Studio is a complex DAW with many components (arrangement, mixing, patterns, plugins, playback, generative features, voice input). The count reflects the breadth of the server's scope. While some tools could be merged (e.g., multiple transport toggles), the granularity helps agents perform fine-grained actions. Slightly over the ideal 3-15 range for a focused server, but reasonable for full DAW control.

Completeness4/5

The toolset covers almost every major FL Studio workflow: arrangement switching, audio analysis/transcription, automation recording (channels, mixer, plugins, tempo), channel/mixer manipulation, pattern/clip management, piano roll editing, plugin control, project lifecycle, transport, UI, voice input, and generative music. Minor gaps exist (e.g., no mixer EQ automation, no CC event editing), but the surface is extensive enough for most music production tasks.

Maintenance

ActivityInactive
ResponsivenessNo issues