Skip to main content
Glama
README.md
# FL Studio MCP

An [MCP](https://modelcontextprotocol.io) server that lets an AI assistant (Claude or any
MCP client) **see and control FL Studio**: transport, tempo, mixer, Channel Rack, patterns,
playlist tracks, and the **parameters of every plugin you load, VSTs included** — plus a path for
writing notes into the piano roll.

```
 AI client ──MCP──▶ fl-studio-mcp (Python) ──SysEx over loopMIDI──▶ "FL MCP Bridge" script ──▶ FL Studio API
   (Claude)            server/                                         (runs inside FL)
```

> **Status: 0.1 (alpha).** The protocol, the server and the in-FL bridge script are covered by
> 33 automated tests that run the real bridge script against a simulated FL Studio API
> (`tests/`). It has **not yet been verified against a live FL Studio session** — see
> [docs/LIMITATIONS.md](docs/LIMITATIONS.md) and please open issues with what you find.

## What the AI can do

| Area | Capabilities |
|---|---|
| Transport | play / stop / record, set tempo, jump position, undo |
| Mixer | list tracks, volume, pan, mute, solo, arm, rename, sends, **list effect slots** |
| Channel Rack | list channels, volume, pan, mute, solo, rename, route to mixer track, select, preview notes |
| **Plugins (incl. VST)** | inventory of every generator and effect in the project; read parameters (name, value, display text); set parameters **by name or index**; step presets |
| Patterns / Playlist | list, rename, select, mute, solo |
| Notes | stage notes (or a `.mid` file) and import them into the piano roll; export the piano roll back for the AI to read |

Full reference: [docs/TOOLS.md](docs/TOOLS.md).

## Install

Requirements: Windows (macOS works in principle — see SETUP), FL Studio 21+, Python 3.10+,
[loopMIDI](https://www.tobias-erichsen.de/software/loopmidi.html) (free virtual MIDI ports).

```bash
git clone https://github.com/DylanCop/fl-studio-mcp
cd fl-studio-mcp
pip install -e .
fl-studio-mcp install-fl-scripts     # copies the scripts into FL's folders
```

Then create the two loopMIDI ports, enable the controller in FL, and register the server with
your MCP client. Step-by-step with screenshots-in-words: **[docs/SETUP.md](docs/SETUP.md)**.

Check everything with:

```bash
fl-studio-mcp doctor
```

### Claude Desktop / Claude Code

```json
{
  "mcpServers": {
    "fl-studio": { "command": "fl-studio-mcp", "args": ["serve"] }
  }
}
```

```bash
claude mcp add fl-studio -- fl-studio-mcp serve
```

## Example prompts

* "Which plugins are on my Lead track, and what are the parameters of the reverb?"
* "Open the filter on Serum a bit — set Cutoff to 0.7 and Resonance to 0.2."
* "Set the tempo to 128 and mute the drum channel."
* "Write a 4-bar chord progression in A minor and stage it so I can import it into the piano roll."

## How it works, and what it can't do

FL Studio exposes a Python *MIDI controller scripting* API. This project uses it as an RPC
endpoint: the server talks JSON-over-SysEx to a controller script running inside FL. Because FL's
API has hard limits (it can't load plugins, and only piano-roll scripts can write notes), some
things need one click from you. Details in [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) and
[docs/LIMITATIONS.md](docs/LIMITATIONS.md).

## Development

```bash
pip install -e ".[dev]"
pytest
```

## License

MIT — see [LICENSE](LICENSE). Not affiliated with Image-Line. "FL Studio" is a trademark of
Image-Line.