- Explore MCP Servers
- fl-studio-mcp
Fl Studio Mcp
What is Fl Studio Mcp
FL Studio MCP is an integration tool that allows users to control FL Studio through MIDI using the Model Context Protocol (MCP). This version 2.0 is designed specifically for macOS and enhances music production capabilities with AI-driven features.
Use cases
Use cases include controlling playback and effects in FL Studio, generating chord progressions and melodies, automating parameters for mixing, and enhancing workflow efficiency in music production.
How to use
To use FL Studio MCP, set up the IAC Driver in macOS, then follow the provided instructions to connect FL Studio with the MCP. Users can send MIDI commands to control playback, create melodies, and automate parameters.
Key features
Key features include a dual-protocol architecture for simple and complex commands, advanced music production features like chord progression generation and melody creation, robust error handling, and structured feedback mechanisms.
Where to use
FL Studio MCP is primarily used in music production environments, particularly by musicians, composers, and producers who utilize FL Studio for creating and arranging music.
Clients Supporting MCP
The following are the main client software that supports the Model Context Protocol. Click the link to visit the official website for more information.
Overview
What is Fl Studio Mcp
FL Studio MCP is an integration tool that allows users to control FL Studio through MIDI using the Model Context Protocol (MCP). This version 2.0 is designed specifically for macOS and enhances music production capabilities with AI-driven features.
Use cases
Use cases include controlling playback and effects in FL Studio, generating chord progressions and melodies, automating parameters for mixing, and enhancing workflow efficiency in music production.
How to use
To use FL Studio MCP, set up the IAC Driver in macOS, then follow the provided instructions to connect FL Studio with the MCP. Users can send MIDI commands to control playback, create melodies, and automate parameters.
Key features
Key features include a dual-protocol architecture for simple and complex commands, advanced music production features like chord progression generation and melody creation, robust error handling, and structured feedback mechanisms.
Where to use
FL Studio MCP is primarily used in music production environments, particularly by musicians, composers, and producers who utilize FL Studio for creating and arranging music.
Clients Supporting MCP
The following are the main client software that supports the Model Context Protocol. Click the link to visit the official website for more information.
Content
FL Studio MCP Integration v2.0
(macOS Only - Current Version)
This guide helps set up the FL Studio MCP (Model Context Protocol) integration v2.0, allowing AI control of FL Studio via MIDI.
Overview of Changes
-
Dual-protocol architecture:
- CC-based protocol for simple commands (play, stop, etc.)
- SysEx-based protocol for complex data-heavy operations (chord progressions, melodies, etc.)
-
Advanced music production features:
- Chord progression generation
- Melody creation based on scales
- Parameter automation
- Arrangement control
- Enhanced status feedback
-
Infrastructure improvements:
- More robust error handling
- Better MIDI communication
- Structured feedback mechanism
- Music theory implementation (scales, chords, progressions)
Current Status (as of YYYY-MM-DD - Please update date)
Working Features:
Based on initial testing, the following core functionalities are confirmed working:
- Basic Commands:
play_note
: Playing individual MIDI notes.control_transport
: Controlling playback (play/stop).select_pattern
: Selecting patterns.add_audio_effect
: Adding effects to mixer tracks.
- Advanced Commands:
create_notes
: Create/clear notes (Implementation unclear)
Non-Functional / Under Development:
The following features are currently not working reliably or are pending implementation/debugging:
- Basic Commands:
create_track
,load_instrument
,set_tempo
,set_mixer_level
,select_channel
,add_midi_effect
. - Advanced Commands:
create_chord_progression
,create_melody
,automate_parameter
,set_arrangement
,get_status
.
Note: The status reflects the current state and may change with further development and debugging. create_chord_progression
is notably non-functional due to missing controller implementation.
Setup Instructions
Step 1: Set up the IAC Driver in macOS
- Open Audio MIDI Setup (you can find it in Applications/Utilities or search with Spotlight)
- Click Window > Show MIDI Studio if the MIDI studio is not already visible
- Double-click on the IAC Driver icon
- Check Device is online
- Create a port named IAC Driver MCP Bridge if it doesn’t already exist
- Click Apply and close the window
Step 2: Install the MCP Server
- Clone the repository
- Install the required Python packages:
orpip install -r requirements.txt
uv install
- Make sure
flstudio_mcp_iac/server.py
is in the correct location in the project structure
Step 3: Install the FL Studio Controller Script
-
Navigate to your FL Studio MIDI scripts folder on macOS:
/Applications/FL Studio.app/Contents/Resources/FL/System/Hardware/
-
Create a new folder named
FL Studio MCP Controller
. -
Copy
device_flstudiocontroller.py
into this new folder.
Step 4: Configure FL Studio
- Open FL Studio
- Go to Options > MIDI Settings
- Find IAC Driver MCP Bridge in the input devices list
- Enable it and select FL Studio MCP Controller v2.0 as the controller type
- Make sure the port is enabled (highlighted)
- Click Refresh if the controller doesn’t appear immediately
Step 5: Run the MCP Server
-
Run the server using the provided script:
./run_flstudio_mcp.sh
or directly with:
python -m flstudio_mcp_iac.server
-
You should see log messages indicating that the server has started and connected to the IAC Driver port
New Features
Chord Progressions
Create chord progressions like C-G-Am-F directly in FL Studio:
# Create a C major chord progression
create_chord_progression(
progression=["C", "G", "Am", "F"],
duration_beats=4,
channel=0,
velocity=100
)
# Create a jazz progression with 7th chords
create_chord_progression(
progression=["Cmaj7", "Dm7", "G7", "Cmaj7"],
duration_beats=2
)
Melody Generation
(Note: create_melody
is currently non-functional)
# Example: Create a melody in C major (Currently non-functional)
# create_melody(
# scale="C major",
# length=8,
# channel=1,
# velocity=90
# )
# Example: Create a pentatonic melody (Currently non-functional)
# create_melody(
# scale="A pentatonicminor",
# length=16,
# channel=2,
# seed=42 # Use a seed for reproducible melodies
# )
Parameter Automation
(Note: automate_parameter
is currently non-functional)
# Example: Automate filter cutoff (Currently non-functional)
# automate_parameter(
# track_index=1,
# plugin_index=0,
# parameter_index=12, # Cutoff parameter
# points=[(0, 0.2), (4, 0.8), (8, 0.4), (16, 0.2)] # (time, value) pairs
# )
Arrangement Control
(Note: set_arrangement
is currently non-functional)
# Example: Set up a pattern sequence with loop points (Currently non-functional)
# set_arrangement(
# pattern_sequence=[0, 1, 2, 3],
# loop_start=0,
# loop_end=4
# )
Enhanced Status Feedback
(Note: get_status
is currently non-functional)
# Example: Get current status (tempo, playback state, etc.) (Currently non-functional)
# status = get_status()
# print(f"Current tempo: {status['data']['tempo']} BPM")
# print(f"Playing: {status['data']['playing']}")
API Reference
Basic Commands (CC-based)
Command | Description | Status |
---|---|---|
create_notes(clear=False) |
Create/clear notes (Implementation unclear) | ❌ Not Working |
play_note(note, velocity, duration) |
Play a single MIDI note | ✅ Working |
create_track(name, track_type) |
Create a new track | ❌ Not Working |
load_instrument(instrument_name, channel) |
Load an instrument | ❌ Not Working |
set_tempo(bpm) |
Set the project tempo | ❌ Not Working |
control_transport(action) |
Control playback (play/stop/record) | ✅ Working |
select_pattern(pattern) |
Select a pattern by number | ✅ Working |
set_mixer_level(track, level) |
Set mixer track volume | ❌ Not Working |
select_channel(channel) |
Select a channel in the Channel Rack | ❌ Not Working |
add_audio_effect(track, effect_type) |
Add an audio effect to a mixer track | ✅ Working |
add_midi_effect(track, effect_type) |
Add a MIDI effect (Implementation unclear) | ❌ Not Working |
Advanced Commands (SysEx-based)
Command | Description | Status |
---|---|---|
create_chord_progression(progression, duration_beats, channel, velocity) |
Create a chord progression | ❌ Not Working |
create_melody(scale, length, channel, velocity, seed) |
Generate a melody based on a scale | ❌ Not Working |
automate_parameter(track_index, plugin_index, parameter_index, points) |
Automate a plugin parameter | ❌ Not Working |
set_arrangement(pattern_sequence, loop_start, loop_end) |
Set the pattern sequence and loop points | ❌ Not Working |
get_status() |
Get detailed project status | ❌ Not Working |
Supported Chords
The system supports the following chord types:
- Major:
"C"
,"G"
, etc. - Minor:
"Cm"
,"Am"
, etc. - Dominant 7th:
"C7"
,"G7"
, etc. - Major 7th:
"Cmaj7"
,"Gmaj7"
, etc. - Minor 7th:
"Cm7"
,"Am7"
, etc. - Diminished:
"Cdim"
,"Bdim"
, etc. - Augmented:
"Caug"
,"Faug"
, etc. - Suspended 4th:
"Csus4"
,"Gsus4"
, etc. - Suspended 2nd:
"Csus2"
,"Dsus2"
, etc.
Supported Scales
The system supports the following scale types:
- Major:
"C major"
,"G major"
, etc. - Minor:
"A minor"
,"E minor"
, etc. - Harmonic Minor:
"A harmonicminor"
, etc. - Melodic Minor:
"D melodicminor"
, etc. - Dorian:
"D dorian"
, etc. - Phrygian:
"E phrygian"
, etc. - Lydian:
"F lydian"
, etc. - Mixolydian:
"G mixolydian"
, etc. - Locrian:
"B locrian"
, etc. - Pentatonic Major:
"C pentatonicmajor"
, etc. - Pentatonic Minor:
"A pentatonicminor"
, etc. - Blues:
"E blues"
, etc.
Advanced Usage
Custom Commands
You can extend the system with custom commands by:
- Adding new functions to the MCP server (
server.py
) - Adding corresponding handlers in the FL Studio controller script (
device_flstudiocontroller.py
) - Implementing the SysEx parsing/handling for complex commands
Creating Complex Musical Progressions
# Create a verse-chorus arrangement
# Verse: Am-F-C-G
# Chorus: C-G-Am-F
verse = ["Am", "F", "C", "G"]
chorus = ["C", "G", "Am", "F"]
# Create verse
create_chord_progression(verse, duration_beats=4, channel=0)
# Create chorus
select_pattern(1) # Move to next pattern (✅ Working)
create_chord_progression(chorus, duration_beats=4, channel=0)
# Set arrangement (Note: set_arrangement is currently non-functional)
# set_arrangement([0, 0, 1, 1, 0, 1, 1, 1], loop_start=0, loop_end=8)
Generating Lead Melodies Over Chord Progressions
(Note: create_melody
is currently non-functional)
# Create chord progression
create_chord_progression(["C", "G", "Am", "F"], duration_beats=4, channel=0)
# Create compatible melody on another channel (Currently non-functional)
# create_melody(scale="C major", length=16, channel=1)
Troubleshooting
MIDI Connection Issues
- Make sure the IAC Driver is online in Audio MIDI Setup
- Ensure the correct MIDI port is selected in FL Studio’s MIDI settings
- Check for any error messages in the MCP server logs
FL Studio Not Responding to Commands
- Make sure the FL Studio MCP Controller is properly loaded (you should see initialization logs)
- Try restarting FL Studio and the MCP server
- Enable debug mode in the controller script by setting
DEBUG = True
SysEx Message Errors
- Check that message sizes aren’t too large (some MIDI implementations have size limits)
- Verify that the command ID matches between server and controller
- Ensure proper JSON formatting for complex command data
Known Limitations
- Feature Status: Several core features are currently non-functional (see “Current Status” section and API tables).
- Notes can be played as well as chords, but setting BPM does not work and neither does loading instruments or audio effects.
Future Enhancements
- Stabilize Core Features: Prioritize fixing the non-functional commands.
- Plugin Scanning & Validation: Implement a system to scan the user’s installed VST/AU generators and effects. This would allow for validating
load_instrument
andadd_audio_effect
calls against available plugins, improving reliability. - Machine learning-based melody generation: Implementation of ML models for more musical melodies (dependent on fixing
create_melody
). - Audio analysis feedback: Integration with audio analysis for more intelligent automation (dependent on fixing
automate_parameter
andget_status
). - Template support: Save and load creative templates for quick composition.
- Multi-device support: Coordination with other MIDI controllers.
Dev Tools Supporting MCP
The following are the main code editors that support the Model Context Protocol. Click the link to visit the official website for more information.