You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+47-23Lines changed: 47 additions & 23 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,9 @@
1
1
# flstudio-mcp
2
2
3
+
> Naming transition: This repository is moving toward the `fls-pilot` / `FL Studio Pilot` project identity.
4
+
> The v2.x stable line intentionally keeps the existing `flstudio-mcp`, `fl-studio-mcp`, and `FLStudioMCP` package, command, and controller names for compatibility.
5
+
> A full breaking rename is planned for the v3.x line.
6
+
3
7
**Control FL Studio with any MCP-compatible LLM: AI mixing, composition, and mix diagnosis through natural language.**
flstudio-mcp is a Model Context Protocol (MCP) server that lets any MCP client (like Claude Desktop, ChatGPT, or Cursor) drive FL Studio 2025 directly — the mixer, plugins, piano roll, routing, and project — from plain-language requests. Ask for a mix diagnosis, a vocal chain, a chord progression in a particular scale, or a full arrangement, and the LLM assistant carries it out through FL's scripting API and a set of calibrated, safety-checked tools.
20
24
21
25
**Key upgrades in v2.0.0:**
26
+
22
27
-**Consolidated domain tools:** Dozens of single-purpose functions were folded into higher-level endpoints such as `fl_transport`, `fl_mixer`, `fl_channel`, `fl_effect`, and `fl_batch`. This reduces tool-selection noise and leaves more context for the assistant to reason about the project.
23
28
-**Agent orientation resource:** Agents should start with `fl://agent-briefing` and `fl://status` for current tool selection, safety gates, and stop rules before live FL work.
24
29
-**Knowledgebase-backed parameters:** API values, dB/Hz mappings, known limits, and safe ranges are captured in the local Knowledgebase so agents can prefer verified project evidence over guesses.
25
30
-**Rollback-first writes:** Persistent FL Studio mutations route through the safety layer: scoped snapshot, smallest practical write, readback where supported, changelog entry, and rollback path. Grouped writes are stored as named rollback units.
26
31
27
-
## High-Level Tools (New in v2.0.0)
32
+
## High-Level Tools
28
33
29
34
This release focuses on rollback-first FL Studio production tooling and a strict agent workflow. The tools below are the highest-value entry points for day-to-day use.
30
35
@@ -47,6 +52,7 @@ Deep Audio Clip parameters such as Stretch Mode, Normalize state, and some sampl
47
52
FL Studio's Python API is useful but has strict boundaries. This project combines safe controller calls, local file analysis, generated Piano Roll scripts, and a snapshot/rollback safety layer. The summary below explains what is automated and where FL Studio still requires manual action.
-*The Limitation:* FL Studio's API cannot read or analyze audio files.
52
58
-*How it works:* These tools read `.wav` or `.mp3` files directly from disk and analyze them with Python libraries such as CREPE when the optional accurate audio extras are installed.
@@ -55,27 +61,32 @@ FL Studio's Python API is useful but has strict boundaries. This project combine
55
61
-*How it works:* The assistant generates a temporary `MCP_Apply` script. A background daemon triggers the armed script with a keyboard shortcut (`Cmd+Opt+Y` on macOS), causing FL Studio to write the notes to the selected Piano Roll target.
-*The Limitation:* Direct editing, splitting, or moving of Audio/MIDI clips in the playlist is blocked by the API.
60
67
-*How it works:* The assistant manages supported structure such as pattern creation, pattern cloning where exposed, section markers, and track metadata through unified domain tools.
-*The Limitation:* Deep Audio Clip features like "Stretch Pro" or the "Normalize" toggle are not exposed.
65
73
-*How it works:* The tools can apply safe Channel Rack volume limits, check for free mixer tracks, and generate manual checklists for Stretch/Normalize states that the FL API cannot verify.
-*Safety:* Renaming and coloring a large project uses scoped snapshots and named rollback units so supported changes can be audited and restored through the MCP safety layer.
-*The Hard Limit:* It is technically impossible to load or insert a plugin via the FL Studio API.
76
86
-*The workflow:* The assistant scans FL Studio plugin database and preset folders on disk, suggests chains from what it finds, and can configure parameters after the user manually loads the chosen plugin.
77
87
78
88
### Phase 7: Mixing & Dynamics
89
+
79
90
-**Mix Doctor (`fl_review_mix`, `fl_mix_watch_start`)**
80
91
-*The Limitation:* A static "snapshot" of a song is useless because audio is dynamic.
81
92
-*How it works:* During peak watch, the user plays the song while the tool polls live API peak meters and keeps running peak evidence for each track.
@@ -84,18 +95,18 @@ FL Studio's Python API is useful but has strict boundaries. This project combine
84
95
-*How it works:* Before sending supported parameter changes to FL Studio, the assistant checks requested values against Knowledgebase conversion entries such as `kb_get_conversion` and sends normalized values within verified ranges.
85
96
86
97
### Phase 8: Export, Health & Safety
98
+
87
99
-**Project Health Checks (`fl_check_project_preflight`)**
88
100
-*How it works:* Before a manual audio render, the assistant can run combined Mix Review, Routing Review, and cleanup checks to report export-readiness risks.
89
101
-**Audio Export (`fl_export_midi`)**
90
-
-*The Limitation:* The API cannot click "Render to WAV".
102
+
-*The Limitation:* The API cannot click "Render to WAV".
91
103
-*How it works:* The tools write standard `.mid` files directly to disk for arrangement exports. Audio bouncing remains manual.
92
104
-**The Safety Layer (`fl_rollback_last_change`)**
93
105
-*The Limitation:* FL Studio's native Undo (`Ctrl+Z`) is highly unreliable for API scripts.
94
106
-*How it works:* The MCP safety layer stores scoped snapshots and changelog entries for supported writes. Calling rollback restores the affected supported state through the MCP rollback path.
95
107
96
108
The server exposes a comprehensive suite of tools across all these phases. For a user-facing workflow overview, full tool catalog, and precise command prompts, see the **[USER_GUIDE](docs/USER_GUIDE.md)**.
97
109
98
-
99
110
## Maintained fork
100
111
101
112
This repository is a materially extended fork of
@@ -160,57 +171,63 @@ These are properties of FL Studio's scripting API, stated plainly:
160
171
161
172
### 1. Configure MIDI Ports
162
173
163
-
***Windows**: Create two virtual MIDI ports in loopMIDI, named exactly `FLStudioMCP RX` and `FLStudioMCP TX`.
164
-
***macOS**:
174
+
-**Windows**: Create two virtual MIDI ports in loopMIDI, named exactly `FLStudioMCP RX` and `FLStudioMCP TX`.
175
+
-**macOS**:
165
176
1. Open the **Audio MIDI Setup** app.
166
177
2. Choose **Window > Show MIDI Studio** (or press `Cmd+8`).
167
178
3. Double-click the **IAC Driver** icon.
168
179
4. Tick the **Device is online** checkbox.
169
180
5. Under **Ports** (or **Buses**), add/rename two ports to exactly:
This script will copy the controller script, create a virtual environment (`.venv`), install the server inside it, and verify that the IAC Driver ports are online. It also pre-seeds the note-bridge script (`MCP_Apply.pyscript`) inside your FL Studio user data directory.
191
205
192
206
> [!IMPORTANT]
193
207
> **macOS Accessibility Permissions**: Since the note-writing tool simulates keyboard shortcuts (`Cmd+Opt+Y`) via `pyautogui` to trigger script runs in FL Studio, the application executing the MCP server (e.g., your terminal, iTerm, Warp, or your MCP client app like Claude Desktop/ChatGPT) must be granted Accessibility permissions. Go to **System Settings > Privacy & Security > Accessibility** and ensure the app you are running is enabled.
***Input list**: Click `FLStudioMCP RX`, tick **Enable**, set **Controller type** to `FLStudioMCP`, and set **Port** to `42`.
204
-
***Output list**: Click `FLStudioMCP TX`, tick **Enable**, and set **Port** to `42` (MUST match the input port).
218
+
-**Input list**: Click `FLStudioMCP RX`, tick **Enable**, set **Controller type** to `FLStudioMCP`, and set **Port** to `42`.
219
+
-**Output list**: Click `FLStudioMCP TX`, tick **Enable**, and set **Port** to `42` (MUST match the input port).
205
220
3. Go to **View > Script output**. It should show `[FLStudioMCP] Ready`.
206
221
207
222
### 4. Connect to your MCP Client
208
223
209
224
#### Option A: Claude Desktop, Cursor, or other stdio clients
225
+
210
226
1. Start the MIDI bridge daemon (recommended so MIDI ports are held by a stable background process):
211
-
* Windows: Run `fl-studio-mcp-daemon`
212
-
* macOS: Run `.venv/bin/fl-studio-mcp-daemon`
227
+
- Windows: Run `fl-studio-mcp-daemon`
228
+
- macOS: Run `.venv/bin/fl-studio-mcp-daemon`
213
229
2. Configure your client (e.g., Claude Desktop). Add this to your configuration file (Windows: `%APPDATA%\Claude\claude_desktop_config.json`, macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`):
230
+
214
231
```json
215
232
{
216
233
"mcpServers": {
@@ -223,22 +240,25 @@ For optional audio/melody analysis extras:
223
240
}
224
241
}
225
242
```
243
+
226
244
*(Note: On Windows, use `fl-studio-mcp` for the command instead of the `.venv` path if installed globally.)*
227
245
228
246
#### Option B: ChatGPT Desktop (SSE)
247
+
229
248
ChatGPT Desktop does not support local stdio subprocesses and requires a remote/SSE connection:
249
+
230
250
1. Start the MIDI bridge daemon in a terminal:
231
-
* Windows: `fl-studio-mcp-daemon`
232
-
* macOS: `.venv/bin/fl-studio-mcp-daemon`
251
+
- Windows: `fl-studio-mcp-daemon`
252
+
- macOS: `.venv/bin/fl-studio-mcp-daemon`
233
253
2. Start the MCP server with the SSE transport in another terminal:
0 commit comments