Skip to main content
Archived

This project has been archived by its maintainers, and is no longer receiving any updates.

🎹 FL Studio MCP Server

CI codecov Python 3.10+ License: MIT

A Model Context Protocol (MCP) server for FL Studio (Fruity Loops), enabling AI assistants like Claude to compose music and control FL Studio through natural language.

✨ Features

  • FL Studio API Integration via Flapi: Control transport, mixer, channels, patterns, and more
  • MIDI Interface: Send MIDI notes and messages to FL Studio via loopMIDI
  • MCP Protocol: Standard interface for AI assistants (Claude, etc.)
  • Dual Communication: Uses both Flapi (for API calls) and MIDI (for notes/CC)
  • Type Safe: Full type hints and validation

🏗️ Architecture

┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│  Claude Desktop │────▶│   MCP Server    │────▶│    FL Studio    │
│  (AI Assistant) │     │   (External)    │     │   (Internal)    │
└─────────────────┘     └─────────────────┘     └─────────────────┘
                               │                        ▲
                               │                        │
                        ┌──────┴──────┐                 │
                        │             │                 │
                        ▼             ▼                 │
                  ┌──────────┐ ┌────────────┐          │
                  │  Flapi   │ │    MIDI    │          │
                  │  Bridge  │ │  Interface │          │
                  └────┬─────┘ └─────┬──────┘          │
                       │             │                  │
                       │    MIDI     │                  │
                       └─────────────┴──────────────────┘
  • Flapi Bridge: Forwards FL Studio API calls (transport, mixer, channels) via MIDI to FL Studio's internal Python
  • MIDI Interface: Sends MIDI notes, CC, program changes directly to FL Studio

📦 Installation

Prerequisites

  1. Python 3.10+
  2. FL Studio (version 20.7+ for MIDI scripting support)
  3. loopMIDI (Windows) - Download

Quick Start

# Install the MCP server
pip install fruityloops-mcp

# Install Flapi for FL Studio API access
pip install flapi
flapi install

Virtual MIDI Port Setup (Windows)

  1. Install loopMIDI
  2. Create these virtual MIDI ports:
    • FLStudio_MIDI - For sending MIDI notes/CC to FL Studio
    • Flapi Request - For Flapi API requests
    • Flapi Response - For Flapi API responses

FL Studio Configuration

For MIDI Control:

  1. Open FL Studio → Options → MIDI Settings
  2. Enable the FLStudio_MIDI port as an input
  3. Route the MIDI input to your desired channel/instrument

For Flapi (API Access):

  1. Run flapi install to install the Flapi script
  2. Restart FL Studio
  3. Go to Options → MIDI Settings
  4. In the Output section, assign unique port numbers to Flapi Request and Flapi Response
  5. In the Input section, set the same port numbers for the corresponding inputs
  6. Assign Flapi Request input to the "Flapi Request" script
  7. Assign Flapi Response input to the "Flapi Response" script

🚀 Usage

With Claude Desktop

Add to your Claude Desktop configuration (%APPDATA%\Claude\claude_desktop_config.json on Windows):

{
  "mcpServers": {
    "fruityloops": {
      "command": "uvx",
      "args": ["fruityloops-mcp"]
    }
  }
}

Or using pip:

{
  "mcpServers": {
    "fruityloops": {
      "command": "fruityloops-mcp"
    }
  }
}

First Steps in Claude

  1. Connect to FL Studio:

    "Connect to FL Studio via Flapi"
    
  2. Check connection:

    "What's the Flapi connection status?"
    
  3. Start composing:

    "Start playback in FL Studio"
    "Set the tempo to 120 BPM"
    "Play a C major chord"
    

🎛️ Available Tools

Flapi Connection

  • flapi_connect - Connect to FL Studio via Flapi
  • flapi_disconnect - Disconnect from Flapi
  • flapi_status - Check connection status

MIDI Tools

  • midi_connect - Connect to MIDI port
  • midi_disconnect - Disconnect from MIDI port
  • midi_list_ports - List available MIDI ports
  • midi_send_note - Send note with duration
  • midi_send_note_on / midi_send_note_off - Note messages
  • midi_send_cc - Control change messages
  • midi_send_program_change - Program change
  • midi_send_pitch_bend - Pitch bend

Transport Controls

  • transport_start / transport_stop - Playback control
  • transport_record - Toggle recording
  • transport_get_bpm / transport_set_bpm - Tempo control
  • transport_get_song_pos / transport_set_song_pos - Position control

Mixer Controls

  • mixer_get_track_volume / mixer_set_track_volume
  • mixer_get_track_name / mixer_set_track_name
  • mixer_get_track_pan / mixer_set_track_pan
  • mixer_mute_track / mixer_solo_track

Channel Controls

  • channels_channel_count - Get number of channels
  • channels_get_channel_name - Get channel name
  • channels_set_channel_volume - Set volume
  • channels_mute_channel - Mute/unmute
  • channels_get_channel_color / channels_set_channel_color

Pattern Controls

  • patterns_pattern_count - Get number of patterns
  • patterns_get_pattern_name / patterns_set_pattern_name
  • patterns_get_pattern_length
  • patterns_jump_to_pattern

Playlist Controls

  • playlist_get_track_name / playlist_set_track_name

General Controls

  • general_get_version - FL Studio version
  • general_get_project_title
  • general_save_project
  • general_undo

UI Controls

  • ui_show_window - Show FL Studio windows (Mixer, Channel Rack, Piano Roll, etc.)
  • ui_get_visible - Check window visibility

🛠️ Development

Setup

# Clone repository
git clone https://github.com/quinnjr/fruityloops-mcp.git
cd fruityloops-mcp

# Install dependencies
uv sync --all-extras

# Install git hooks
./install-hooks.ps1  # On Windows
./install-hooks.sh   # On Unix/macOS

Testing

# Run tests
uv run pytest

# Run with coverage
uv run pytest --cov

# Run linting
uv run ruff check .

# Run formatting
uv run ruff format .

🐛 Troubleshooting

Flapi Connection Issues

  1. "Flapi not available": Run pip install flapi
  2. "Failed to connect":
    • Ensure loopMIDI ports Flapi Request and Flapi Response exist
    • Restart FL Studio after installing Flapi
    • Check FL Studio MIDI settings are configured correctly
  3. "FL Studio connection test failed":
    • Verify FL Studio is running
    • Check the Flapi script is loaded (look for it in the MIDI scripts panel)

MIDI Issues

  1. "MIDI port not found": Create FLStudio_MIDI port in loopMIDI
  2. "Failed to send MIDI": Ensure MIDI port is connected first using midi_connect
  3. No sound: Check FL Studio has the MIDI port enabled and routed to an instrument

📖 Documentation

🤝 Contributing

We welcome contributions! Please see CONTRIBUTING.md for guidelines.

📜 License

This project is licensed under the MIT License - see the LICENSE file for details.

Copyright (c) 2025 Joseph Quinn

🙏 Acknowledgments


Made with ❤️ for the FL Studio and AI community

Metadata

Release files for fruityloops-mcp 1.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fruityloops-mcp 1.1.0
File Size Uploaded
fruityloops_mcp-1.1.0.tar.gz 168.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for fruityloops-mcp 1.1.0
File Interpreter ABI Platform
fruityloops_mcp-1.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 184.5 kB

Release files / fruityloops_mcp-1.1.0.tar.gz

Download URL fruityloops_mcp-1.1.0.tar.gz
Size 168.8 kB
Tags Source
SHA-256 checksum
How to use checksums
25e9d36b6f69b8a495a21eb066fa65236dfe09910e1aee3f34e9e9b15bd6c1b6
BLAKE2b-256 checksum
How to use checksums
763e31a9a1b5c91e4314be8588f63d1e16b6f9d95dc8b94c2b93e7b563746767
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.13 {"installer":{"name":"uv","version":"0.9.13"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / fruityloops_mcp-1.1.0-py3-none-any.whl

Download URL fruityloops_mcp-1.1.0-py3-none-any.whl
Size 15.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
65354f14e8a403b3c1d6ee6b89d1567d0ae917f39a4fbd701399350de94d9ab7
BLAKE2b-256 checksum
How to use checksums
b4b8d451b898815c26c4f7e8d6e7425921b46af0fd5a5c8d902149e6b3661d0e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.9.13 {"installer":{"name":"uv","version":"0.9.13"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

1.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page