MCP server for FL Studio (Fruity Loops) Python API integration
Project description
🎹 FL Studio MCP Server
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 portmidi_disconnect- Disconnect from MIDI portmidi_list_ports- List available MIDI portsmidi_send_note- Send note with duration (note on + wait + note off)midi_send_note_on- Send note on messagemidi_send_note_off- Send note off messagemidi_send_cc- Send control change messagemidi_send_program_change- Send program change messagemidi_send_pitch_bend- Send pitch bend message
MIDI Setup
- Install loopMIDI
- Create a virtual MIDI port named
FLStudio_MIDI - In FL Studio: Options → MIDI Settings → Enable the loopMIDI port
- 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
- Installation Guide - Detailed installation instructions
- Contributing Guide - How to contribute
- Usage Examples - Practical examples
- API Documentation - Auto-generated API docs
🤝 Contributing
We welcome contributions! Please see CONTRIBUTING.md for guidelines.
Development Workflow
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Run tests and linting
- Commit with conventional commits
- 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
- FL Studio Python API
- Model Context Protocol
- loopMIDI by Tobias Erichsen
🐛 Troubleshooting
For troubleshooting help, see the Installation Guide or open an issue.
📊 Status
- Build:
- Coverage:
- Version: 1.0.0
- Python: 3.10+
Made with ❤️ for the FL Studio and AI community
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
37130403a1c68696eeab208b192a99d7f924f516e5a6f56772ad075686db500f
|
|
| MD5 |
344ff5c8296e23652bbc333c4fe1a710
|
|
| BLAKE2b-256 |
8805cc28f92a87dce2d8ea13dd111be9eee43679db877184414508c49c48e73c
|
File details
Details for the file fruityloops_mcp-1.0.0-py3-none-any.whl.
File metadata
- Download URL: fruityloops_mcp-1.0.0-py3-none-any.whl
- Upload date:
- Size: 10.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2cfa8dab1c051410ebeac397104f7d6f567e7a304fa03e631f06502711c1d96b
|
|
| MD5 |
b96ae277213c003defd84986251af202
|
|
| BLAKE2b-256 |
3dfc3ba14129ca9bd1f04112b2b301178c2443eca72807b38c380a25bfdc9998
|