Skip to main content

MCP server for FL Studio (Fruity Loops) Python API integration

Project description

🎹 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 to interact with FL Studio's Python API and MIDI interfaces.

✨ Features

  • FL Studio API Integration: Control transport, mixer, channels, patterns, and more
  • MIDI Interface: Send MIDI messages to FL Studio via loopMIDI
  • MCP Protocol: Standard interface for AI assistants
  • Comprehensive Testing: 94% test coverage with unit and integration tests
  • Type Safe: Full type hints and validation
  • Well Documented: Complete API documentation with examples

📦 Installation

For detailed installation instructions, see INSTALL.md.

Quick Start

# Using uvx (recommended)
uvx fruityloops-mcp

# Using uv
uv tool install fruityloops-mcp
uv tool run fruityloops-mcp

# Using pip
pip install fruityloops-mcp
fruityloops-mcp

🎛️ MIDI Controls

The server provides comprehensive MIDI control through the loopMIDI virtual MIDI port:

Available 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 (note on + wait + note off)
  • midi_send_note_on - Send note on message
  • midi_send_note_off - Send note off message
  • midi_send_cc - Send control change message
  • midi_send_program_change - Send program change message
  • midi_send_pitch_bend - Send pitch bend message

MIDI Setup

  1. Install loopMIDI
  2. Create a virtual MIDI port named FLStudio_MIDI
  3. In FL Studio: Options → MIDI Settings → Enable the loopMIDI port
  4. Connect the MCP server - MIDI tools work independently of FL Studio API

🚀 Usage

With Claude Desktop

Add to your Claude Desktop configuration:

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

With Other MCP Clients

The server uses stdio transport and works with any MCP-compatible client.

🛠️ Development

Prerequisites

  • Python 3.10+
  • uv package manager
  • FL Studio (for FL Studio API features)
  • loopMIDI (for MIDI features)

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.sh  # On Unix/Linux/macOS
./install-hooks.ps1  # On Windows

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 .

Docker Testing

Test the CI/CD pipeline locally:

# Run full CI simulation
docker-compose run ci

# Interactive testing
docker-compose run test

# Test git hooks
docker-compose run test /app/test-git-hooks.sh

See docker-test-README.md for details.

📖 Documentation

🤝 Contributing

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

Development Workflow

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes
  4. Run tests and linting
  5. Commit with conventional commits
  6. Push and create a pull request

📜 License

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

Copyright (c) 2025 Joseph Quinn

🙏 Acknowledgments

🐛 Troubleshooting

For troubleshooting help, see the Installation Guide or open an issue.

📊 Status

  • Build: CI Status
  • Coverage: Coverage
  • Version: 1.0.0
  • Python: 3.10+

Made with ❤️ for the FL Studio and AI community

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fruityloops_mcp-1.0.0.tar.gz (163.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fruityloops_mcp-1.0.0-py3-none-any.whl (10.5 kB view details)

Uploaded Python 3

File details

Details for the file fruityloops_mcp-1.0.0.tar.gz.

File metadata

  • Download URL: fruityloops_mcp-1.0.0.tar.gz
  • Upload date:
  • Size: 163.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.8

File hashes

Hashes for fruityloops_mcp-1.0.0.tar.gz
Algorithm Hash digest
SHA256 37130403a1c68696eeab208b192a99d7f924f516e5a6f56772ad075686db500f
MD5 344ff5c8296e23652bbc333c4fe1a710
BLAKE2b-256 8805cc28f92a87dce2d8ea13dd111be9eee43679db877184414508c49c48e73c

See more details on using hashes here.

File details

Details for the file fruityloops_mcp-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for fruityloops_mcp-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2cfa8dab1c051410ebeac397104f7d6f567e7a304fa03e631f06502711c1d96b
MD5 b96ae277213c003defd84986251af202
BLAKE2b-256 3dfc3ba14129ca9bd1f04112b2b301178c2443eca72807b38c380a25bfdc9998

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page