fl-studio-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@fl-studio-mcpSet tempo to 120 BPM and start playback"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
fl-studio-mcp
An open-source MCP server that connects Claude (Claude Desktop or Claude Code) to Image-Line FL Studio. Ask Claude in plain language to start playback, set the tempo, gain-stage your mixer, program drum patterns, write chord progressions into the piano roll, or audit your mix for clipping.
Built by sorkthropic. MIT licensed.
How it works
FL Studio has no external API — only two Python environments inside it:
Environment | Runs | Can touch |
MIDI device scripts ( | continuously | transport, mixer, channels, patterns, general |
Piano roll scripts ( | on demand from the piano roll menu | notes, markers, score |
So this project bridges the gap with files + a virtual MIDI cable:
Claude ──MCP──▶ fl-studio-mcp server
│ 1. writes ~/.fl-studio-mcp/request.json
│ 2. sends MIDI CC 110 through the virtual cable ("doorbell")
▼
FL Studio device script (device_FLStudioMCP.py)
│ 3. reads the request, calls the FL Studio Python API
│ 4. writes ~/.fl-studio-mcp/response.json
▼
fl-studio-mcp server reads the response ──▶ ClaudePiano roll edits are special: FL Studio only allows note editing from
on-demand piano roll scripts. Claude's note tools therefore queue the
notes to ~/.fl-studio-mcp/pianoroll_queue.json, and you apply them by
running Tools ▸ Scripts ▸ MCP PianoRoll inside the piano roll (one click;
undo works normally).
Note: the mailbox lives in
~/.fl-studio-mcp/rather than/tmpbecause/tmpdoesn't exist on Windows and temp paths can differ per process on macOS — the home folder is the one path both sides always agree on.
Setup
1. Install this package
git clone https://github.com/alansork/fl-studio-mcp
cd fl-studio-mcp
pip install -e . # or: uv sync2. Create the virtual MIDI cable
Windows — loopMIDI
Install loopMIDI.
Open it and create a port named FL MCP (any name works; this one is auto-detected).
Leave loopMIDI running — the port only exists while it runs.
macOS — nothing to do
The server creates its own virtual port named FL MCP automatically the first time it needs one. FL Studio lists it as an input while the server is running. (If you prefer an always-on port that exists even when the server is down, enable the IAC Driver in Audio MIDI Setup — Window ▸ Show MIDI Studio ▸ double-click IAC Driver ▸ tick Device is online — and it will be used instead.)
If auto-detection picks the wrong port, set the environment variable
FL_MCP_MIDI_PORT to (part of) the right port's name.
3. Install the FL Studio scripts
python3 install.pyThis copies:
device_FLStudioMCP.py→.../FL Studio/Settings/Hardware/FLStudioMCP/MCP_PianoRoll.pyscript→.../FL Studio/Settings/Piano roll scripts/
and offers to register the server in Claude Desktop's config.
4. Wire it up inside FL Studio
Restart FL Studio (it scans for scripts at startup).
Options ▸ MIDI Settings.
In the Input list, select your virtual port (FL MCP / loopMIDI / IAC).
Set Controller type to FL Studio MCP Bridge and click Enable.
You should see
FL Studio MCP Bridge v0.1.0 readyin the script output (View ▸ Script output).
5. Register with Claude
Claude Desktop — install.py can do this for you, or add manually to
claude_desktop_config.json:
{
"mcpServers": {
"fl-studio-mcp": {
"command": "uv",
"args": ["run", "--directory", "/path/to/fl-studio-mcp", "fl-studio-mcp"]
}
}
}Claude Code:
claude mcp add fl-studio-mcp -- uv run --directory /path/to/fl-studio-mcp fl-studio-mcpThen ask Claude: "Run fl_check_bridge_status" — it should report the MIDI port and FL Studio answering the ping.
Tools
Transport (transport_tools.py)
Tool | What it does |
| Playback control |
| Set tempo (10–520 BPM) |
| "pattern" or "song" mode |
| Arm/disarm recording |
| BPM, play/record state, song position |
Mixer (mixer_tools.py)
Tool | What it does |
| Table of names, volumes, pans, mutes, colors |
| Fader (0–1; 0.8 = 0 dB) |
| Pan (-1 to 1) |
| Mute/unmute |
| Solo with isolation options |
| Label + color |
| Bus/sidechain routing |
Channel rack (channel_tools.py)
Tool | What it does |
| Channels + their mixer assignments |
| Per-channel vol/pan/pitch |
| Program drum steps |
| Route channel → insert |
| Mute/unmute a channel |
Piano roll (pianoroll_tools.py) — queued; apply with the MCP PianoRoll script
Tool | What it does |
| Music theory → notes |
| Arbitrary notes |
| Snap notes to a grid |
| Remove all notes (undoable) |
Diagnostics (diagnostic_tools.py)
Tool | What it does |
| Clipping / headroom / L-R imbalance report (run during playback) |
| Tempo, PPQ, channel/pattern/track counts |
| Health-check the whole bridge — run this first when debugging |
Development
Run the test suite (no FL Studio or MIDI hardware needed):
python3 -m unittest discover -s testsTroubleshooting
Symptom | Fix |
"No virtual MIDI cable found" | Start loopMIDI (Win) / enable IAC (macOS); check |
"FL Studio did not respond" | FL open? Script enabled in MIDI Settings? Right input port? |
Notes don't appear | Piano roll tools only queue — run Tools ▸ Scripts ▸ MCP PianoRoll |
| Peaks are only measured during playback — press play first |
License
MIT © sorkthropic
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- 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/alansork/fl-studio-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server