FL Studio 2025 AI Bridge
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| FLMCP_MIDI_PORT | No | Name of the loopMIDI port used for MIDI-wake mechanism. | loopMIDI |
| FLMCP_TRANSPORT | No | Transport 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
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| 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_positionC | Seek to a specific position in the song. |
| transport_song_lengthA | Return song length in ticks, seconds, ms, bars, steps. |
| transport_set_loop_modeB | Set FL Studio's song/pattern loop mode. |
| transport_set_playback_speedA | Set the playback speed multiplier (0.25..4.0). |
| transport_set_tempoB | 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 |
| pattern_countB | 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_createC | 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_deleteC | 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_countA | Total channel count (global = across all groups). |
| channel_infoB | 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_selectedA | Return currently selected channel (or null). |
| channel_selectC | Select channel (exclusive=True deselects others). |
| channel_set_volumeB | Set channel volume (0.0..1.0, where 0.78 ≈ 0 dB). |
| channel_set_panB | Set channel pan (-1.0..1.0). |
| channel_set_pitchB | Set channel pitch offset in semitones (-120..120). |
| channel_muteB | Mute / unmute / toggle (None = toggle). |
| channel_soloC | Solo / unsolo / toggle (None = toggle). |
| channel_set_nameB | Rename a channel. |
| channel_set_colorA | 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_noteB | Trigger a one-shot MIDI note on the channel (live preview, not recorded). |
| channel_get_grid_bitA | 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_sequenceA | Read the full step sequence for a channel (optionally for a specific pattern). |
| channel_set_step_sequenceC | Overwrite step sequence. |
| channel_clear_step_sequenceC | 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_infoB | Detailed info on a mixer track (name, vol, pan, mute, solo, arm, color, stereosep, sends, fx slots). |
| mixer_all_tracksD | 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_muteA | Mute / unmute / toggle (None = toggle). |
| mixer_soloC | Solo / unsolo / toggle. |
| mixer_armC | Arm track for recording. |
| mixer_set_nameB | Rename a mixer track. |
| mixer_set_colorB | Set mixer track color ('#RRGGBB' or 'rgb(r,g,b)'). |
| mixer_set_stereo_separationA | 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_routeB | 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_validC | 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_presetD | 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_infoC | Info on a playlist track: name, color, mute, solo, height, group. |
| playlist_all_tracksC | 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_patternC | Place a pattern clip on a playlist track at a given bar position. |
| playlist_delete_clipB | 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_markerC | 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
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| status | Bridge + transport quick status. |
| project | Full project metadata: tempo, signature, channels, mixer, patterns, selection. |
| transport | Live transport state (is_playing, position, tempo, loop mode). |
| channels | Full channel rack as JSON. |
| mixer | All mixer tracks as JSON. |
| patterns | All patterns in the project. |
| playlist | Playlist tracks + clips. |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/Boyan253/fl-studio-2025-ai-bridge'
If you have feedback or need assistance with the MCP directory API, please join our Discord server