flstudio-mcp-mac
Enables controlling FL Studio on macOS via MCP, including transport, mixer, channel, MIDI export, and Piano Roll note insertion.
README
FL Studio MCP Mac
<!-- mcp-name: io.github.purahmanian/flstudio-mcp-mac -->
macOS-first MCP bridge for FL Studio. It exposes FL Studio transport, mixer, channel, MIDI export, and Piano Roll note-apply workflows to MCP clients such as Claude Desktop, Claude Code, Cursor, and other MCP-capable tools.
This is an alpha MVP. It is intentionally scoped around FL Studio's documented Python MIDI scripting and Piano Roll scripting APIs. It does not promise full headless FL Studio automation.
Why This Exists
Most FL Studio MCP work today is Windows-oriented. macOS has a cleaner CoreMIDI path for virtual ports, and FL Studio supports Python-based MIDI scripts on macOS. This project turns that into a small local MCP server plus companion FL Studio scripts.
What Works
- Live bridge over macOS virtual MIDI ports.
- FL Studio status and health checks.
- Transport: play, stop, record toggle, rewind, song/pattern mode, metronome toggle.
- Tempo changes.
- Mixer track reads and explicit track mutations.
- Channel Rack reads and explicit channel mutations.
- Standard MIDI file generation for import into FL Studio.
- Piano Roll queue file plus an included
.pyscriptto insert persistent notes.
Known Limits
- FL Studio's MIDI scripting API is not a complete DAW API.
- Loading plugins, loading arbitrary audio files, and rendering/exporting are not implemented here.
- Persistent note writing goes through the included Piano Roll script. The MCP server queues notes; you run
Scripts > FL Studio MCP Applyin the target Piano Roll. - Live bridge setup requires FL Studio's MIDI settings to map the request/response ports. The MCP server starts a singleton local MIDI daemon so Claude Desktop, Claude Code, and terminal tests share the same CoreMIDI endpoints.
Install
From this repo:
python3 -m pip install .
flstudio-mcp-mac-install
The installer copies:
device_FLStudioMCP.pyto~/Documents/Image-Line/FL Studio/Settings/Hardware/FLStudioMCP/FL Studio MCP Apply.pyscriptto~/Documents/Image-Line/FL Studio/Settings/Piano roll scripts/
Configure FL Studio on macOS
-
Start the MCP server once so it starts the local MIDI daemon and creates the virtual CoreMIDI ports:
flstudio-mcp-macYou can stop this foreground MCP process after the ports appear. The background daemon keeps the
FLStudioMCP RequestandFLStudioMCP Responseports available for all MCP clients. -
Open FL Studio and go to
Options > MIDI Settings. -
In the input list, choose
FLStudioMCP Request. -
Set
Controller typetoFL Studio MCP Mac. -
Set the controller output to
FLStudioMCP Response. -
Restart the MCP client if needed. If duplicate
FLStudioMCPports appear, quit old MCP server processes and start the v0.1.1+ daemon again.
MCP Client Config
For detailed setup across Claude Desktop, Claude Code, Cursor, Windsurf, PyPI, and the MCP Registry, see docs/publishing.md.
Example Claude Desktop config:
{
"mcpServers": {
"flstudio-mcp-mac": {
"command": "flstudio-mcp-mac"
}
}
}
For source installs where the command is not on PATH:
{
"mcpServers": {
"flstudio-mcp-mac": {
"command": "python3",
"args": ["-m", "flstudio_mcp_mac"]
}
}
}
MIDI Note Workflow
Use fl_create_midi_file when you want a normal .mid file to import.
Use fl_queue_piano_roll_notes when you want to apply notes into the currently open Piano Roll:
- Ask the MCP client to queue notes.
- In FL Studio, open the target channel's Piano Roll.
- Run
Scripts > FL Studio MCP Apply.
Note shape:
[
{ "pitch": 60, "start": 0, "duration": 1, "velocity": 100 },
{ "pitch": 64, "start": 1, "duration": 1, "velocity": 96 },
{ "pitch": 67, "start": 2, "duration": 2, "velocity": 96 }
]
Times are in beats. MIDI pitch uses the standard 0-127 scale.
Development
python3 -m pip install ".[dev]"
PYTHONPATH=src pytest
Set FLSTUDIO_MCP_BRIDGE=mock to run the MCP server with deterministic in-memory FL Studio responses for protocol tests:
FLSTUDIO_MCP_BRIDGE=mock python3 -m flstudio_mcp_mac
Normal live mode uses a background daemon. For low-level debugging, set FLSTUDIO_MCP_BRIDGE=direct to make one MCP process own the virtual MIDI ports directly.
For live FL Studio validation steps, see docs/testing.md.
Protocol
The bridge sends base64 JSON over MIDI control-change frames on channel 16:
- CC 120: frame start
- CC 121: one base64 character
- CC 122: frame end
The FL script only accepts whitelisted command names and returns one JSON response for each request.
Privacy
This server runs entirely on your machine. It collects no telemetry and stores no data on any remote service. It communicates only with your local FL Studio instance over macOS virtual MIDI ports (CoreMIDI), and writes files only where you ask: generated MIDI files and the Piano Roll queue JSON under your local Music folder. No account, API key, or network connection is required, and nothing you do in FL Studio leaves your computer.
Built by
Built by Puya Ventures LLC. I build custom MCP servers and AI integrations. Get in touch: purahmanian@gmail.com | Portfolio: https://puyarahmanian.com
License
MIT. See LICENSE.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.