FL Studio MCP Server
Enables control of FL Studio through MIDI communication, allowing AI assistants to manage transport controls, mixer adjustments, channel rack settings, and piano roll note data.
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 MCP Serveradd a C major chord to the piano roll starting at bar 2"
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 Server
An MCP (Model Context Protocol) server that enables AI assistants to control FL Studio through MIDI communication and Piano Roll scripts.
Quick Demo
dont mind the scuffed audio, i had to clip with my mic bc apple wouldnt let me record desktop audio lol
https://github.com/user-attachments/assets/d4fc668f-9fe5-4ab4-9f18-76cd661029c6
Original Audio
If you wanted to hear the better audio
https://github.com/user-attachments/assets/c2b1a5e7-1640-41fa-82bc-18ca7cbae9e8
Features
Transport Control
Play, pause, stop playback
Toggle recording
Set playback position
Get song length and position
Control loop mode (pattern/song)
Adjust playback speed
Mixer Control
Get/set track volume and pan
Mute/solo tracks
Arm tracks for recording
Set track names and colors
Stereo separation control
Channel Rack Control
List all channels
Get/set channel properties (volume, pan, name, color)
Mute/solo channels
Route channels to mixer tracks
Trigger MIDI notes in real-time
Step sequencer control (get/set grid bits)
Plugin Control
List plugin parameters
Get/set parameter values
Navigate presets (next/previous)
Query plugin info
Piano Roll Control
Add notes to the piano roll with precise timing
Add chords with a single command
Delete specific notes by MIDI number and time
Clear all notes from the piano roll
Read piano roll state to see all existing notes
Auto-triggering via keystroke (Cmd+Opt+Y on macOS, Ctrl+Alt+Y on Windows)
Related MCP server: FL Studio MCP Server
Important Limitations
Cannot Load Plugins
The FL Studio scripting API does not support loading new VST/AU plugins. You can only control parameters of plugins that are already loaded in your project.
Cannot Create Patterns
There is no API to programmatically create new patterns. You can only work with existing patterns.
Requirements
FL Studio 20.7+ (MIDI Controller Scripting API)
Python 3.10+
macOS or Windows
macOS: IAC Driver (built-in, needs to be enabled)
Windows: loopMIDI
Which AI Clients Work With This?
This is a standard MCP server that talks to clients over stdio — it isn't hardcoded to any one AI vendor. In principle, any MCP-compatible client can connect: Claude Desktop, Claude Code, Cursor, Windsurf, Gemini CLI/Gemini's MCP support, OpenAI's Codex CLI/Agents SDK MCP support, etc.
What's actually tested and auto-configured: only Claude Desktop and Claude Code, via scripts/install_mcp_for_claude.sh (macOS/Linux) and scripts/install_mcp_for_claude.ps1 (Windows). Other clients (Gemini, OpenAI-based tools, etc.) are not tested against this server and have no installer support — you'd need to manually add an equivalent MCP server entry to that client's own config, pointing at:
{
"command": "uv",
"args": ["run", "--directory", "/path/to/fl-studio-mcp", "fl-studio-mcp"]
}(adjust /path/to/fl-studio-mcp to your local clone). If you try this with a non-Claude client, please open an issue with what worked/didn't — the protocol should support it, but it hasn't been verified here.
Quick Installation
The easiest way to install is using the provided setup script for your platform.
macOS / Linux
# Clone the repository
git clone https://github.com/karl-andres/fl-studio-mcp.git
cd fl-studio-mcp
# Run the one-command installer
./install.shWindows
# Clone the repository
git clone https://github.com/karl-andres/fl-studio-mcp.git
cd fl-studio-mcp
# Allow running local scripts for this user (one-time)
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned -Force
# Run the one-command installer
.\install.ps1install.ps1 is the Windows counterpart to install.sh — same steps, PowerShell instead of bash, and it installs Python 3.12 specifically (required for prebuilt python-rtmidi wheels on Windows).
Both installers will:
Install uv if not present
Install Python dependencies
Guide you through enabling virtual MIDI ports (IAC Driver on Mac, loopMIDI on Windows)
Install the FL Studio MIDI controller script
Install the Piano Roll script (ComposeWithLLM)
Configure Claude Desktop or Claude Code automatically (
scripts/install_mcp_for_claude.sh/scripts/install_mcp_for_claude.ps1)
Windows piano-roll auto-trigger note: the Piano Roll script is launched by sending FL Studio a keystroke (
Ctrl+Alt+Y). On Windows this requires briefly foregrounding the FL Studio window, so FL Studio will pop to the front for a moment each time a tool likefl_send_notesruns. This is expected. See Piano Roll script not triggering if it doesn't fire at all.
Manual Installation
1. Install Python Dependencies
# Using uv (recommended)
uv sync
# Or using pip
pip install -e .2. Enable Virtual MIDI Ports
macOS (IAC Driver)
Open Audio MIDI Setup (search in Spotlight)
Press Cmd+2 or go to Window > Show MIDI Studio
Double-click on IAC Driver
Check "Device is online"
Click Apply
Windows (loopMIDI)
Download and install loopMIDI
Create a virtual port (any name works)
Keep loopMIDI running while using FL Studio
3. Install FL Studio Scripts
Copy the controller script to FL Studio's Hardware folder:
# macOS
mkdir -p ~/Documents/Image-Line/FL\ Studio/Settings/Hardware/FLStudioMCP
cp fl_controller/device_FLStudioMCP.py ~/Documents/Image-Line/FL\ Studio/Settings/Hardware/FLStudioMCP/
# Windows
mkdir "%USERPROFILE%\Documents\Image-Line\FL Studio\Settings\Hardware\FLStudioMCP"
copy fl_controller\device_FLStudioMCP.py "%USERPROFILE%\Documents\Image-Line\FL Studio\Settings\Hardware\FLStudioMCP\"Copy the Piano Roll script:
# macOS
cp scripts/ComposeWithLLM.pyscript ~/Documents/Image-Line/FL\ Studio/Settings/Piano\ roll\ scripts/
# Windows
copy scripts\ComposeWithLLM.pyscript "%USERPROFILE%\Documents\Image-Line\FL Studio\Settings\Piano roll scripts\"4. Configure FL Studio
Restart FL Studio (if it's running)
Go to Options > MIDI Settings
Under Input, find your virtual MIDI port (e.g., "IAC Driver Bus 1")
Set the Controller type to FLStudioMCP
Enable the port (click to highlight it)
5. Configure Claude (or another MCP client)
Add to your Claude Desktop config:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"fl-studio": {
"command": "uv",
"args": ["run", "--directory", "/path/to/fl-studio-mcp", "fl-studio-mcp"]
}
}
}Or for Claude Code, add to your MCP settings (~/.claude.json, or run claude mcp add).
Using a different MCP-compatible client (Gemini, an OpenAI-based tool, Cursor, etc.)? The same command/args pair above is all any MCP host needs — add it to that client's own MCP config in whatever format it expects. See Which AI Clients Work With This? for what's actually been tested.
Usage
Running the Server Manually
# Using uv
uv run fl-studio-mcp
# Or after installation
fl-studio-mcpPiano Roll Workflow
Open FL Studio and select a channel
Open the Piano Roll (F7 or double-click the channel)
The first time, manually run the script: Tools > Scripting > ComposeWithLLM
After that, the MCP tools will auto-trigger the script
Available Tools
Connection
Tool | Description |
| Connect/reconnect to FL Studio |
| Get connection status |
Transport
Tool | Description |
| Start/pause playback |
| Stop playback |
| Toggle recording |
| Get playback/recording state |
| Set playback position |
| Get song duration |
| Switch between pattern/song mode |
| Adjust playback speed (0.25x-4x) |
Mixer
Tool | Description |
| Get number of mixer tracks |
| Get track details |
| List all tracks |
| Set track volume |
| Set track pan |
| Mute/unmute track |
| Solo/unsolo track |
| Arm track for recording |
| Rename track |
| Set track color |
| Adjust stereo width |
Channels
Tool | Description |
| Get number of channels |
| Get channel details |
| List all channels |
| Get selected channel |
| Select/deselect channel |
| Select channel exclusively |
| Trigger MIDI note (real-time) |
| Set channel volume |
| Set channel pan |
| Mute/unmute channel |
| Solo/unsolo channel |
| Rename channel |
| Set channel color |
| Route to mixer track |
| Get step sequencer step |
| Set step sequencer step |
| Get full pattern |
| Set full pattern |
Plugins
Tool | Description |
| Check if plugin exists |
| Get plugin name |
| Get parameter count |
| List all parameters |
| Get parameter value |
| Set parameter value |
| Get preset count |
| Next preset |
| Previous preset |
| Get plugin color |
Piano Roll
Tool | Description |
| Add notes to the piano roll |
| Add a chord (multiple notes at same time) |
| Delete specific notes |
| Clear all notes |
| Read current piano roll notes |
| Manually trigger the FL Studio script |
| Get piano roll system info |
| Cancel pending queued changes |
Example Workflows
Adjusting a Mix
"Set the volume of mixer track 1 to 80% and pan it slightly left"Creating a Drum Pattern
"Create a basic kick pattern on channel 0 with kicks on steps 0, 4, 8, and 12"Adding a Melody to Piano Roll
"Add a C major arpeggio starting at beat 0: C4, E4, G4, C5 - each note quarter duration"Adding Chords
"Add a C major chord at beat 0, then F major at beat 2, then G major at beat 4"Automating Plugin Parameters
"List the parameters of the plugin on channel 0 and set the filter cutoff to 50%"Troubleshooting
"Not connected to FL Studio"
Ensure FL Studio is running
Check that the FLStudioMCP controller is enabled in MIDI Settings
On Mac, verify IAC Driver is enabled in Audio MIDI Setup
On Windows, verify loopMIDI is running
Restart FL Studio after enabling the controller
"Timeout waiting for FL Studio response"
Make sure FL Studio is in focus
Check the Script output window in FL Studio (View > Script output)
Verify the controller is receiving MIDI (look for activity in MIDI Settings)
Piano Roll script not triggering
First time: manually run Tools > Scripting > ComposeWithLLM in FL Studio
On macOS: grant Accessibility permissions when prompted
On Windows: the MCP server foregrounds the FL Studio window automatically before sending the hotkey — if FL Studio isn't running or is minimized to the system tray, the trigger can't find it and will fall back to a warning telling you to press the hotkey manually
Try pressing Cmd+Opt+Y (macOS) or Ctrl+Alt+Y (Windows) manually to confirm the hotkey itself is bound to the script in FL Studio
If you just updated the server code (e.g. pulled a fix to the trigger logic), fully restart your MCP client (Claude Desktop/Code) — reconnecting the MCP server alone does not respawn the underlying process, so it can keep running stale code
No MIDI ports available
macOS: Enable IAC Driver in Audio MIDI Setup
Windows: Install and run loopMIDI
Architecture
This MCP server uses a hybrid approach:
┌─────────────────┐ ┌─────────────────────────────────────────┐
│ MCP Client │────▶│ FastMCP Server │
│ (Claude, etc) │ │ │
└─────────────────┘ │ ┌─────────────────┐ ┌──────────────┐ │
│ │ MIDI + JSON │ │ Piano Roll │ │
│ │ Tools │ │ Tools (JSON) │ │
│ └────────┬────────┘ └──────┬───────┘ │
└───────────┼──────────────────┼──────────┘
│ │
MIDI + JSON JSON Files +
│ Keystroke
▼ ▼
┌─────────────────────────────────────────┐
│ FL Studio │
│ ┌──────────────┐ ┌──────────────────┐ │
│ │FLStudioMCP │ │ Piano Roll Script│ │
│ │(MIDI Ctrl) │ │ (ComposeWithLLM) │ │
│ └──────────────┘ └──────────────────┘ │
└─────────────────────────────────────────┘How It Works
Transport/Mixer/Channels/Plugins:
MCP server writes command to JSON file
Sends MIDI trigger note to FL Studio
FL Studio controller script reads JSON, executes API, writes response
MCP server reads response
Piano Roll:
MCP server writes note requests to JSON file
Sends keystroke (Cmd+Opt+Y on macOS, Ctrl+Alt+Y on Windows) to trigger FL Studio script — on Windows, the FL Studio window is foregrounded first so the keystroke actually reaches it
Piano Roll script reads JSON and modifies notes
Development
Prerequisites
Python 3.10+
uv (recommended)
Setup
# Install all dependencies including dev extras
uv sync --dev
# Or with pip
pip install -e ".[dev]"Available Commands
Command | Description |
| Run the MCP server |
| Lint the codebase |
| Lint and auto-fix |
| Run tests |
Project Structure
fl-studio-mcp/
├── fl_controller/
│ └── device_FLStudioMCP.py # FL Studio MIDI controller script (runs inside FL Studio)
├── scripts/
│ ├── setup.sh # FL Studio script installer
│ ├── install_mcp_for_claude.sh # Claude config installer (macOS/Linux)
│ ├── install_mcp_for_claude.ps1 # Claude config installer (Windows)
│ └── ComposeWithLLM.pyscript # Piano Roll script (runs inside FL Studio)
├── src/fl_studio_mcp/
│ ├── server.py # FastMCP server entry point
│ ├── tools/ # MCP tool implementations
│ │ ├── channels.py
│ │ ├── mixer.py
│ │ ├── piano_roll.py
│ │ ├── plugins.py
│ │ └── transport.py
│ └── utils/
│ ├── connection.py # FL Studio connection wrapper
│ ├── fl_trigger.py # Piano roll keystroke trigger
│ └── midi_connection.py # MIDI + JSON communication layer
├── install.sh # One-command installer (macOS/Linux)
└── install.ps1 # One-command installer (Windows)Credits
FL Studio API Stubs - API documentation
FastMCP - MCP server framework
mido - MIDI library for Python
calvinw/fl-studio-mcp - Piano Roll integration approach
Image-Line - FL Studio
License
MIT
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.
Related MCP Servers
- Alicense-qualityDmaintenanceAn MCP server that connects AI assistants to FL Studio for music production via Virtual MIDI. It enables users to control transport, manage the mixer, write notes, and manipulate plugin parameters through natural language.1MIT
- Alicense-quality-maintenanceEnables AI assistants to control FL Studio on Windows through a local MCP server without cloud dependencies. Bridges MCP clients to FL Studio's Python scripting environment via file-based IPC for project management, transport control, and UI workflow automation.
- AlicenseAqualityBmaintenanceAI control for FL Studio via the Model Context Protocol — full in-DAW mixing (Mix Doctor diagnosis, gain staging, EQ/compression/reverb, reference matching), routing, and composition through Claude and any MCP client. 67 tools. Windows.6723MIT
- Alicense-qualityBmaintenanceReal-time AI-assisted music production, advanced composition, mixing, and VST coordination for FL Studio via bidirectional MIDI & WebSockets, exposing over 100 tools for comprehensive DAW control.7MIT
Related MCP Connectors
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
MCP server for Producer/Riffusion AI music generation
Create, co-edit, analyze, publish, and export collaborative step-sequencer sessions through MCP.
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/karl-andres/fl-studio-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server