MCP.Market

Flstudio MCP server

by rosasynthesiz·io.github.rosasynthesiz/flstudio-mcp·v1.0.0·57 stars

Control FL Studio with Claude: in-DAW mixing, diagnosis, routing, and composition.

A85/100grade A
What users say
No reviews yet
Be the first
Safety scan
A85/100

full report

Adoption
Growing

57 stars32 downloads/wk

Reviews

Write one

Nobody has reviewed Flstudio yet.

If you have run it, two minutes of your experience saves the next person an afternoon.

Flstudio tools (67, 6 write)

write = sends, deletes, buys or posts

Read from the package source without running it. The installed server may list more.

  • fl_analyze_audio

    Estimate tempo + key (+ duration, beats, onsets) of an audio file. Pure offline analysis -- does NOT touch FL. Key is ESTIMATED.

  • fl_apply_compression_intent

    Compress via Fruity Limiter (COMP section) or FabFilter Pro-C. ALWAYS sets ratio AND threshold together; ratio/attack/release/makeup (+ Pro-C Style) per intent, as ONE rollback unit. When level_aware and the track is playing, threshold is set relative to the MEASURED peak (a smart starting point, not exact gain-reduction); stopped -> preset fallback + a note. Returns readback + the measured level

  • fl_apply_delay_intent

    Musical delay moves on a Fruity Delay (time division / feedback / wet / feedback-cut), as one undo-able group. Feedback is clamped <=100% unless intensity>0.9 (warns on self-oscillation risk). Returns readback strings.

  • fl_apply_eq_intent

    Apply a musical EQ move on a Fruity Parametric EQ 2 using a free band. Sets type/freq/gain/width as one undo-able group; returns the band used and FL's readback strings. Revert with fl_rollback_last_change.

  • fl_apply_mix_fix

    Apply ONE Mix Doctor fix via the safety layer: snapshot -> write -> FRESH readback -> rollback-able with fl_rollback_last_change.

  • fl_apply_reverb_intent

    Musical reverb moves on a Fruity Reeverb 2 (decay/wet/high-cut), as one undo-able group. Returns readback strings. Revert: fl_rollback_last_change.

  • fl_arrange_add_marker

    Add a named timeline marker at a bar (intro/verse/chorus/drop).

  • fl_arrange_clone_pattern

    Clone a pattern (copies its notes) and rename the clone -- e.g. for verse -> verse2 variations.

  • fl_arrange_new_patternwrite action

    Create + select + name the next empty pattern. After this, the note bridge (fl_write_piano_roll_notes) writes INTO this pattern.

  • fl_arrange_select_channel

    Make a channel the active selection so the note bridge (fl_write_piano_roll_notes) writes INTO it. Use before writing each instrument's notes in a section (drums -> ch X, bass -> ch Y, ...).

  • fl_clear_mute_solo

    Unmute and unsolo every mixer track (reset). The universal undo for the bulk solo/mute tools.

  • fl_detect_cleanup_candidates

    Flag (do NOT touch) empty channels + unused mixer tracks, each with a reason. Judgement is computed server-side from cheap controller reads. Channel emptiness is a name heuristic; unused-track detection is reliable.

  • fl_diagnose_mix

    Scan the WHOLE mix and report problems + proposed fixes. READ-ONLY.

  • fl_export_midiwrite action

    Write a type-1 multi-track .mid from an arrangement spec. YOU (Claude) generate the whole arrangement -- multiple named tracks, each with notes {pitch, start_bars, length_bars, velocity} across all sections -- and this writes ONE .mid. Bypasses the note-bridge's one-pattern + MCP_Apply limits.

  • fl_extract_melody

    Transcribe a monophonic melody to quantized notes; engine-selectable (CREPE = accurate/heavy, pyin = light). Returns ALL notes with confidence + a `kept` flag; bridge_notes holds only the confident notes, ready for fl_write_piano_roll_notes. Does NOT write to FL -- review first.

  • fl_gain_stage

    Propose per-track fader trims so each track's peak sits in a healthy band (~-12..-6 dBFS, aim -9) and the Master keeps -3..-6 dB headroom. READ-ONLY proposals -- apply approved ones via fl_apply_mix_fix (rollback).

  • fl_get_channel_routing

    Which mixer track each channel-rack channel is linked to: {total, channels:[{channel, name, target_mixer_track, target_name}]}.

  • fl_get_channel_state

    All channel-rack channels (index, name, volume, pan, mute, solo).

  • fl_get_mixer_state

    All mixer tracks (index, name, volume, pan, mute, solo). Names in this overview are truncated; use a single-track read for the full name.

  • fl_get_play_state

    Return whether FL is currently playing and / or recording.

  • fl_get_project_state

    Tempo, transport state, pattern/channel/mixer counts.

  • fl_get_routing

    Which destination tracks this mixer track sends to: {track, name, routes_to:[{dst, dst_name, level?}]}.

  • fl_get_routing_all

    Routing for every mixer track (paginated under the hood, returned whole): {total, routing:[{i, name, routes_to:[...]}]}.

  • fl_get_song_position

    Return the current playhead position in beats from the song start.

  • fl_get_tempo

    Return the current FL Studio project tempo in beats per minute.

  • fl_get_track_level

    Measure a mixer track's level by sampling meter peaks over a short window. Requires PLAYBACK -- returns playing=False (avg/peak null) when stopped/silent. {track, playing, avg_db, peak_db}.

  • fl_group_tracks

    Group sources into a bus, EXCLUSIVELY: each source -> bus ON and its direct -> Master OFF; bus -> Master ON; optional bus rename. Applied as ONE rollback unit -- fl_rollback_last_change undoes the whole grouping.

  • fl_list_chains

    List the built-in genre processing-chain recipes (vocal, drum_bus, bass, master) and their ordered steps.

  • fl_list_installed_plugins

    Read FL's installed-plugin DATABASE from disk (the .fst shortcuts FL writes for every scanned plugin) -> a de-duped, categorized list of what you OWN. Bypasses the FL API (which only sees LOADED plugins). FL still can't LOAD these -- it's for library-aware suggestions. effects_by_role is a rough keyword grouping (Claude should apply its own plugin knowledge). Read-only (directory listing only).

  • fl_list_presets

    Read preset NAMES from disk: FL Presets\ (per-plugin 'Plugin presets', plus Channel/Mixer presets) + Serum 2 Presets (.serumpreset). With NO filter -> a SUMMARY (which plugins have presets + counts). With plugin_filter -> that plugin's full preset list. Read-only. FL can't LOAD presets via the API -- this is for suggestions (you load the named preset, then Claude can tweak it).

  • fl_mix_watch_start

    Begin a peak-HOLD watch: continuously sample every mixer track's peak, keeping a RUNNING MAX per track, until fl_mix_watch_stop. Tell the user to PLAY the whole song (or at least the loudest section / the drop) while this runs -- then stop for full-song-accurate level diagnosis. Read-only.

  • fl_mix_watch_status

    Is a peak watch running, and for how long / how many polls so far?

  • fl_mix_watch_stop

    Stop the peak watch and diagnose on the FULL-SONG running-max peaks captured across the whole watch (accurate clipping/headroom/imbalance vs the ~1.2s snapshot). Read-only -- proposes fixes, applies nothing.

  • fl_mute_tracks

    Mute a group of tracks (leaves the others as they are). Use category or explicit tracks. One rollback unit; reverse with fl_clear_mute_solo.

  • fl_ping

    Check that FL Studio is running and the controller script is loaded.

  • fl_play

    Start playback. Idempotent — calling while already playing is a no-op.

  • fl_plugin_get_params

    Every named parameter of the plugin in this slot: index, name, normalised value (0..1) and FL's display string (e.g. '3.6dB', '500Hz'). Returns {"total", "params":[{"i","name","v","s"}, ...]}.

  • fl_plugin_list

    List the filled effect slots (0-9) on a mixer track, with plugin names.

  • fl_plugin_set_param

    Set one plugin parameter (normalised 0..1). ``param`` may be an index or a name; names are resolved from the live param list. The change is logged and undo-able via fl_rollback_last_change. Returns before/after plus the resolved {index, name}.

  • fl_quantize_pattern

    Quantize the notes ALREADY in the open Piano roll: reads the score, snaps note starts (and optionally lengths) to the grid, rewrites -- via the pyscript bridge, no dialog. Needs the Piano roll open + MCP_Apply armed once this session (same setup as note writing).

  • fl_record

    Toggle FL Studio's record-arm state.

  • fl_reference_match

    Compare your mix's LEVEL + rough tonal BALANCE to a reference track. READ-ONLY. Analyzes the reference FILE (overall level + low/mid/high spectral-band shares) and your mix (Master peak for level + a ROUGH name-based band estimate). HONEST: a level/balance compare, NOT a spectral match -- FL doesn't expose its output audio, so the your-mix balance is estimated from track names + peaks. Suggests ad

  • fl_rollback_last_change

    Undo the most recent write by replaying its pre-change snapshot.

  • fl_set_channel_color

    Set the color of channel-rack channels (separate from mixer-track color). Target by index or name substring. ONE rollback unit -- fl_rollback_last_change reverts it.

  • fl_set_channel_mute

    Mute or unmute a channel-rack channel (state=True mutes).

  • fl_set_channel_pan

    Set a channel-rack channel's pan position (-1 left .. +1 right).

  • fl_set_channel_solo

    Solo or unsolo a channel-rack channel (state=True solos).

  • fl_set_channel_volume

    Set a channel-rack channel's volume. unit='db' uses 0.8=unity (0 dB).

  • fl_set_dry_runwrite action

    When on, write tools return a 'planned' preview without changing FL.

  • fl_set_mixer_mute

    Mute or unmute a mixer track (state=True mutes).

  • fl_set_mixer_name

    Rename a mixer track.

  • fl_set_mixer_pan

    Set a mixer track's pan position (-1 left .. +1 right).

  • fl_set_mixer_solo

    Solo or unsolo a mixer track (state=True solos).

  • fl_set_mixer_volume

    Set a mixer track volume. unit='db' uses 0.8=unity (0 dB).

  • fl_set_route

    Enable/disable a send from src -> dst (calls afterRoutingChanged on the FL side). Snapshot + readback; undo with fl_rollback_last_change.

  • fl_set_song_position

    Move the playhead to the given beat position.

  • fl_set_tempo

    Set the FL Studio project tempo. Range is 10-999 BPM (FL's own limits).

  • fl_set_track_color

    Set the color of mixer tracks. Pick targets by category ('drums', 'bass', ...) or an explicit tracks list; choose a color by name or hex. All writes are ONE rollback unit -- fl_rollback_last_change reverts them. (Master is never colored.)

  • fl_setup_chain

    Plan a genre-appropriate processing chain over a track's EXISTING plugins. READ-ONLY plan: returns the ordered intent calls (each with the matched plugin + slot) and which steps are MISSING because the needed plugin isn't loaded (FL can't load plugins -- add those manually). After the user approves, apply each step by calling its 'apply' tool+args (fl_apply_eq_intent / fl_apply_compression_intent

  • fl_solo_tracks

    Isolate a group so only it is audible -- mutes every OTHER (non-Master) track. Use category ('drums', etc.) or explicit tracks. Implemented as mute-the-rest (reliable; FL's multi-solo is inconsistent). Reverse with fl_clear_mute_solo. One rollback unit.

  • fl_stop

    Stop playback. Idempotent.

  • fl_suggest_preset

    Suggest presets from YOUR library matching a description, for a given plugin. Reads the plugin's preset NAMES from disk + ranks by name match. Name-only (can't hear the sound) -- apply your own knowledge of preset naming. FL can't LOAD presets via the API: recommend which to load in the plugin manually; AFTER the user loads it you can tweak its params via fl_plugin_set_param / fl_apply_*_intent.

  • fl_take_snapshot

    Read current state for a scope (for your own before/after diffing).

  • fl_toggle_play

    Toggle between play and stop, mirroring the spacebar in FL.

  • fl_write_piano_roll_noteswrite action

    Write notes into the currently-open FL Piano roll.

  • fl_write_raga_chordswrite action

    Write CHORDS / a progression (stacked notes sharing start times) into the selected channel via the bridge. YOU stack chord tones drawn from the raga/scale (give simultaneous notes the SAME time_bars). Tool selects the channel + writes. SHOW the user the chords BEFORE calling.

  • fl_write_raga_melodywrite action

    Write a MELODY (single-line, sequential notes) into the selected channel via the piano-roll bridge. YOU (Claude) generate the swaras for the named raga/root -> MIDI notes (use the proper aarohana/avarohana; respect the raga's allowed swaras); this tool only selects the channel + writes. SHOW the user the notes/swaras BEFORE calling. Needs the Piano roll open + MCP_Apply armed once this session (se

Public scan report

scanner v0.1.9 · 2026-09-27 · same rubric, same numbers if you re-run it

no findings
  • Code scan42 source files scanned25/25
  • –Live reliabilityno gateway calls yet and no remote to proben/a
  • –Tool poisoningtools not inspected (local package is not executed); not countedn/a
  • Auth qualitylocal package, no credentials required12/15
  • Maintenancelast push 86 days ago12/15
  • Maintainer identityregistry namespace matches repository owner6/10
Overall 85/100. Components that don't apply are left out of the denominator. Any critical finding is an F.RubricAppeal a findingJSON

How Flstudio compares

Against every graded MCP server, from our own scans and uptime checks. Updated after each scan run.

Safety score
85/100
higher than 70% of 48,255 servers
Tools
67
the typical server has 7
Tools that change things
9%
typical: 0%. Fewer write tools means less an agent can break
GitHub stars
57
more than 95% of 28,688 servers
Downloads a week
32
more than 20% of 12,191 servers with a package

What its tools let an agent do: 61 read · 6 change

Install Flstudio in Claude Code, Cursor or VS Code

claude mcp add flstudio-mcp -- uvx fl-studio-mcp
Add to Cursor

What the publisher says

From the Flstudio repository's README, as published. We do not edit it. Read it on GitHub

flstudio-mcp

Control FL Studio with Claude: AI mixing, composition, and mix diagnosis through natural language.

Claude diagnosing and fixing a mix in FL Studio through natural language.

Overview

flstudio-mcp is a Model Context Protocol (MCP) server that lets Claude Desktop drive FL Studio 2025 directly — the mixer, plugins, piano roll, routing, and project — from plain-language requests. Ask for a mix diagnosis, a vocal chain, a chord progression in a particular scale, or a full arrangement, and Claude carries it out through FL's scripting API and a set of calibrated, safety-checked tools.

It is genre- and producer-agnostic: nothing about it assumes a particular style of music.

Quickstart

scripts\install_windows.bat        :: controller + server + note bridge
fl-studio-mcp-daemon               :: start the bridge, keep it running
./scripts/install_macos.sh         # macOS: controller + server + note bridge
fl-studio-mcp-daemon               # start the bridge, keep it running

Wire the two virtual MIDI ports in FL (loopMIDI on Windows, IAC Driver on macOS), arm MCP_Apply once in the piano roll, then ask Claude in plain language:

"Scan my mix and tell me what's wrong." — "Set up a vocal chain from my plugins." — "Export this arrangement to MIDI."

Full setup is below.

Capabilities

Mixing & diagnosis

  • Mix Doctor — scans the whole mix and reports concrete problems (clipping, low headroom, level imbalance, missing high-pass, ungrouped related tracks, overlapping EQ boosts), each with the exact evidence and a proposed fix. Fixes are applied one at a time, only on approval, through a snapshot → write → readback → rollback safety layer. Master clipping is resolved by trimming the contributing source tracks rather than pulling the master.
  • Full-song peak watch — holds a running peak per track across playback, so level decisions are based on the loudest moment of the actual song, not a single instant.
  • Calibrated processing intents — musical EQ, compression, reverb, and delay moves mapped to real plugin parameters (native and third-party), each applied as one reversible change.
  • Level-aware compression — sets thresholds relative to a track's measured level during playback.
  • Gain staging — proposes per-track trims toward a healthy level with proper master headroom.
  • Reference match — compares your mix's level and tonal balance against a reference track.
  • Bulk track control — solo or mute a whole group (drums, vocals, …) in one step, with a one-call reset.
  • Track & channel coloring — color a track, a channel, or a whole group (drums, vocals, …) by color name or hex, reversible like every other change.

Plugin & preset control

  • Read and set plugin parameters by name, on native and third-party plugins (the parameter list is resolved live).
  • Chain suggestions and preset recommendations drawn from your actual installed library — read directly from FL's plugin database and preset folders on disk, so recommendations are limited to what you own.

Shortened. The full README is on GitHub.

Nothing above is checked by us. What we check is on the safety report.

Flstudio: common questions

Is Flstudio MCP server safe?
Yes, by our scan: it is graded A (85/100). Read the Flstudio safety report
How do I install Flstudio?
It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
Does Flstudio need an API key?
Not as far as the registry entry and our scan can tell: no credentials are declared or required.
Is Flstudio maintained?
The last commit was 124 days ago (2026-07-03). The latest release is v1.0.0.
How does Flstudio compare with other MCP servers?
safety score 85/100 (higher than 70% of 48,255 servers); tools 67 (the typical server has 7); tools that change things 9% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.