FL Studio MCP
Conecta assistentes de IA ao FL Studio, permitindo que produtores controlem a reprodução, configurações do mixer, plugins e notas do piano roll por meio de comandos em linguagem natural.
Documentação
Servidor FL Studio MCP
Controle o FL Studio com linguagem natural. Um servidor MCP (Model Context Protocol) que permite que assistentes de IA controlem o FL Studio por meio de comunicação MIDI e scripts do Piano Roll — componha melodias, ajuste mixes e automatize plugins sem tocar no mouse.
Sumário
- Demonstração
- Recursos
- Limitações
- Requisitos
- Instalação Rápida
- Instalação Manual
- Quais Clientes de IA Funcionam com Isso?
- Uso
- Ferramentas Disponíveis
- Exemplos de Fluxos de Trabalho
- Solução de Problemas
- Arquitetura
- Desenvolvimento
- Créditos
Demonstração
Peça ao Claude para analisar seu projeto e compor uma melodia — as notas aparecem no Piano Roll em tempo real:

não ligue para o áudio ruim, tive que gravar com o microfone porque a Apple não me deixou gravar o áudio da área de trabalho lol
https://github.com/user-attachments/assets/d4fc668f-9fe5-4ab4-9f18-76cd661029c6
Ouça o áudio original se quiser
https://github.com/user-attachments/assets/c2b1a5e7-1640-41fa-82bc-18ca7cbae9e8
Recursos
Controle de Transporte
- Reproduzir, pausar, parar a reprodução
- Alternar gravação
- Definir posição de reprodução
- Obter duração e posição da música
- Controlar o modo de loop (padrão/música)
- Ajustar velocidade de reprodução
Controle do Mixer
- Obter/definir volume e pan de faixas
- Silenciar/isolado faixas
- Armar faixas para gravação
- Definir nomes e cores de faixas
- Controle de separação estéreo
Controle do Channel Rack
- Listar todos os canais
- Obter/definir propriedades do canal (volume, pan, nome, cor)
- Silenciar/isolado canais
- Roteamento de canais para faixas do mixer
- Disparar notas MIDI em tempo real
- Controle do step sequencer (obter/definir bits da grade)
Controle de Plugins
- Listar parâmetros de plugins
- Obter/definir valores de parâmetros
- Navegar por presets (próximo/anterior)
- Consultar informações do plugin
Controle do Piano Roll
- Adicionar notas ao piano roll com tempo preciso
- Adicionar acordes com um único comando
- Excluir notas específicas por número MIDI e tempo
- Limpar todas as notas do piano roll
- Ler o estado do piano roll para ver todas as notas existentes
- Disparo automático via atalho de teclado (Cmd+Opt+Y no macOS, Ctrl+Alt+Y no Windows)
Limitações
Não é possível carregar plugins — A API de scripts do FL Studio não suporta carregar novos plugins VST/AU. Você só pode controlar parâmetros de plugins que já estão carregados no seu projeto.
Sem gerenciamento de padrões (ainda) — O servidor pode escrever notas e passos do step sequencer em um padrão, mas não possui ferramentas para criar, alternar, renomear ou clonar padrões. Tudo vai para o padrão atualmente selecionado no FL Studio, então escolha ou crie o padrão você mesmo antes de pedir notas. (A API de scripts do FL Studio suporta isso por meio do módulo
patterns, então pode ser adicionado.)
Requisitos
- FL Studio 20.7+ (API de Scripts de Controle MIDI)
- Python 3.10+
- macOS ou Windows
- macOS: IAC Driver (integrado, precisa ser habilitado)
- Windows: loopMIDI
Instalação Rápida
macOS / Linux
git clone https://github.com/karl-andres/fl-studio-mcp.git
cd fl-studio-mcp
./install.sh
Windows
git clone https://github.com/karl-andres/fl-studio-mcp.git
cd fl-studio-mcp
# Allow running local scripts for this user (one-time)
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned -Force
.\install.ps1
install.ps1 é o equivalente no Windows ao install.sh — mesmos passos, PowerShell em vez de bash. Ele instala Python 3.12 especificamente (necessário para wheels pré-compilados de python-rtmidi no Windows).
Ambos os instaladores irão:
- Instalar uv se não estiver presente
- Instalar dependências do Python
- Orientar você na habilitação de portas MIDI virtuais (IAC Driver no Mac, loopMIDI no Windows)
- Instalar o script de controle MIDI do FL Studio
- Instalar o script do Piano Roll (ComposeWithLLM)
- Configurar o Claude Desktop ou Claude Code automaticamente (
scripts/install_mcp_for_claude.sh/scripts/install_mcp_for_claude.ps1)
Nota sobre piano roll no Windows: O script do Piano Roll é iniciado enviando um atalho de teclado ao FL Studio (
Ctrl+Alt+Y). No Windows, isso traz a janela do FL Studio para o primeiro plano brevemente, então o FL Studio vai aparecer na frente por um momento cada vez que uma ferramenta comofl_send_notesfor executada. Isso é esperado. Veja Script do Piano Roll não disparando se ele não disparar de forma alguma.
Instalação Manual
1. Instalar Dependências do Python
# Using uv (recommended)
uv sync
# Or using pip
pip install -e .
2. Habilitar Portas MIDI Virtuais
macOS (IAC Driver)
- Abra Audio MIDI Setup (pesquise no Spotlight)
- Pressione Cmd+2 ou vá em Janela > Mostrar MIDI Studio
- Clique duas vezes em IAC Driver
- Marque "Device is online"
- Clique em Apply
Windows (loopMIDI)
- Baixe e instale o loopMIDI
- Crie uma porta virtual (qualquer nome serve)
- Mantenha o loopMIDI em execução enquanto usa o FL Studio
3. Instalar Scripts do FL Studio
Copie o script de controle para a pasta Hardware do FL Studio:
# macOS
mkdir -p ~/Documents/Image-Line/FL\ Studio/Settings/Hardware/FLStudioMCP
cp fl_controller/device_FLStudioMCP.py ~/Documents/Image-Line/FL\ Studio/Settings/Hardware/FLStudioMCP/
# Windows
mkdir "%USERPROFILE%\Documents\Image-Line\FL Studio\Settings\Hardware\FLStudioMCP"
copy fl_controller\device_FLStudioMCP.py "%USERPROFILE%\Documents\Image-Line\FL Studio\Settings\Hardware\FLStudioMCP\"
Copie o script do Piano Roll:
# macOS
cp scripts/ComposeWithLLM.pyscript ~/Documents/Image-Line/FL\ Studio/Settings/Piano\ roll\ scripts/
# Windows
copy scripts\ComposeWithLLM.pyscript "%USERPROFILE%\Documents\Image-Line\FL Studio\Settings\Piano roll scripts\"
4. Configurar o FL Studio
- Reinicie o FL Studio (se estiver em execução)
- Vá em Opções > Configurações de MIDI
- Em Entrada, encontre sua porta MIDI virtual (ex.: "IAC Driver Bus 1")
- Defina o Tipo de controle como FLStudioMCP
- Habilite a porta (clique para destacá-la)
5. Configurar Seu Cliente MCP
Adicione à configuração do seu Claude Desktop:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"fl-studio": {
"command": "uv",
"args": ["run", "--directory", "/path/to/fl-studio-mcp", "fl-studio-mcp"]
}
}
}
Para o Claude Code, adicione às suas configurações de MCP (~/.claude.json, ou execute claude mcp add).
Quais Clientes de IA Funcionam com Isso?
Este é um servidor MCP padrão que se comunica com clientes via stdio — ele não é vinculado a nenhum fornecedor de IA específico. Em princípio, qualquer cliente compatível com MCP pode se conectar: Claude Desktop, Claude Code, Cursor, Windsurf, Gemini CLI, Codex CLI/Agents SDK da OpenAI, etc.
O que é realmente testado e configurado automaticamente: apenas Claude Desktop e Claude Code, via scripts/install_mcp_for_claude.sh (macOS/Linux) e scripts/install_mcp_for_claude.ps1 (Windows). Outros clientes não têm suporte de instalador — você precisaria adicionar manualmente a seguinte entrada de servidor MCP à configuração do próprio cliente:
{
"command": "uv",
"args": ["run", "--directory", "/path/to/fl-studio-mcp", "fl-studio-mcp"]
}
Substitua /path/to/fl-studio-mcp pelo caminho do seu clone local. Se você tentar isso com um cliente que não seja Claude, abra uma issue informando o que funcionou ou não — o protocolo deve suportar, mas não foi verificado aqui.
Uso
Executando o Servidor Manualmente
# Using uv
uv run fl-studio-mcp
# Or after installation
fl-studio-mcp
Fluxo de Trabalho do Piano Roll
- Abra o FL Studio e selecione um canal
- Abra o Piano Roll (F7 ou clique duas vezes no canal)
- Na primeira vez, execute o script manualmente: Ferramentas > Scripts > ComposeWithLLM
- Depois disso, as ferramentas MCP dispararão o script automaticamente
Ferramentas Disponíveis
Conexão
| Ferramenta | Descrição |
|---|---|
fl_connect | Conectar/reconectar ao FL Studio |
fl_connection_status | Obter status da conexão |
Transporte
| Ferramenta | Descrição |
|---|---|
fl_play | Iniciar/pausar reprodução |
fl_stop | Parar reprodução |
fl_record | Alternar gravação |
fl_get_transport_status | Obter estado de reprodução/gravação |
fl_set_song_position | Definir posição de reprodução |
fl_get_song_length | Obter duração da música |
fl_set_loop_mode | Alternar entre modo padrão/música |
fl_set_playback_speed | Ajustar velocidade de reprodução (0,25x–4x) |
Mixer
| Ferramenta | Descrição |
|---|---|
fl_get_mixer_track_count | Obter número de faixas do mixer |
fl_get_mixer_track_info | Obter detalhes da faixa |
fl_get_all_mixer_tracks | Listar todas as faixas |
fl_set_track_volume | Definir volume da faixa |
fl_set_track_pan | Definir pan da faixa |
fl_mute_track | Silenciar/reativar faixa |
fl_solo_track | Isolar/desisolar faixa |
fl_arm_track | Armar faixa para gravação |
fl_set_track_name | Renomear faixa |
fl_set_track_color | Definir cor da faixa |
fl_set_stereo_separation | Ajustar largura estéreo |
Canais
| Ferramenta | Descrição |
|---|---|
fl_get_channel_count | Obter número de canais |
fl_get_channel_info | Obter detalhes do canal |
fl_get_all_channels | Listar todos os canais |
fl_get_selected_channel | Obter canal selecionado |
fl_select_channel | Selecionar/desselecionar canal |
fl_select_one_channel | Selecionar canal exclusivamente |
fl_trigger_note | Disparar nota MIDI (tempo real) |
fl_set_channel_volume | Definir volume do canal |
fl_set_channel_pan | Definir pan do canal |
fl_mute_channel | Silenciar/reativar canal |
fl_solo_channel | Isolar/desisolar canal |
fl_set_channel_name | Renomear canal |
fl_set_channel_color | Definir cor do canal |
fl_route_channel_to_mixer | Roteamento para faixa do mixer |
fl_get_grid_bit | Obter passo do step sequencer |
fl_set_grid_bit | Definir passo do step sequencer |
fl_get_step_sequence | Obter padrão completo |
fl_set_step_sequence | Definir padrão completo |
Plugins
| Ferramenta | Descrição |
|---|---|
fl_is_plugin_valid | Verificar se o plugin existe |
fl_get_plugin_name | Obter nome do plugin |
fl_get_plugin_param_count | Obter número de parâmetros |
fl_get_plugin_params | Listar todos os parâmetros |
fl_get_plugin_param_value | Obter valor do parâmetro |
fl_set_plugin_param_value | Definir valor do parâmetro |
fl_get_preset_count | Obter número de presets |
fl_next_preset | Próximo preset |
fl_prev_preset | Preset anterior |
fl_get_plugin_color | Obter cor do plugin |
Piano Roll
| Ferramenta | Descrição |
|---|---|
fl_send_notes | Adicionar notas ao piano roll |
fl_send_chord | Adicionar um acorde (várias notas ao mesmo tempo) |
fl_delete_notes | Excluir notas específicas |
fl_clear_piano_roll | Limpar todas as notas |
fl_get_piano_roll_state | Ler notas atuais do piano roll |
fl_trigger_script | Disparar manualmente o script do FL Studio |
fl_get_piano_roll_info | Obter informações do sistema do piano roll |
fl_clear_request_queue | Cancelar alterações pendentes na fila |
Exemplos de Fluxos de Trabalho
Ajustando um Mix
"Set the volume of mixer track 1 to 80% and pan it slightly left"
Criando um Padrão de Bateria
"Create a basic kick pattern on channel 0 with kicks on steps 0, 4, 8, and 12"
Adicionando uma Melodia ao Piano Roll
"Add a C major arpeggio starting at beat 0: C4, E4, G4, C5 - each note quarter duration"
Adicionando Acordes
"Add a C major chord at beat 0, then F major at beat 2, then G major at beat 4"
Automatizando Parâmetros de Plugins
"List the parameters of the plugin on channel 0 and set the filter cutoff to 50%"
Solução de Problemas
"Não conectado ao FL Studio"
- Certifique-se de que o FL Studio está em execução
- Verifique se o controle FLStudioMCP está habilitado nas Configurações de MIDI
- No Mac, verifique se o IAC Driver está habilitado no Audio MIDI Setup
- No Windows, verifique se o loopMIDI está em execução
- Reinicie o FL Studio após habilitar o controle
"Tempo esgotado aguardando resposta do FL Studio"
- Certifique-se de que o FL Studio está em foco
- Verifique a janela de saída de Scripts no FL Studio (Exibir > Saída de scripts)
- Verifique se o controle está recebendo MIDI (procure atividade nas Configurações de MIDI)
Script do Piano Roll não disparando
- Na primeira vez: execute manualmente Ferramentas > Scripts > ComposeWithLLM no FL Studio
- No macOS: conceda permissões de Acessibilidade quando solicitado
- No Windows: o servidor MCP traz a janela do FL Studio para o primeiro plano automaticamente antes de enviar o atalho — se o FL Studio não estiver em execução ou estiver minimizado na bandeja do sistema, o disparo não consegue encontrá-lo e cairá em um aviso dizendo para você pressionar o atalho manualmente
- Tente pressionar Cmd+Opt+Y (macOS) ou Ctrl+Alt+Y (Windows) manualmente para confirmar que o atalho está vinculado ao script no FL Studio
- Se você acabou de atualizar o código do servidor (ex.: baixou uma correção), reinicie completamente seu cliente MCP (Claude Desktop/Code) — apenas reconectar o servidor MCP não reinicia o processo subjacente
Nenhuma porta MIDI disponível
- macOS: Habilite o IAC Driver no Audio MIDI Setup
- Windows: Instale e execute o loopMIDI
Arquitetura
Este servidor MCP usa uma abordagem híbrida:
┌─────────────────┐ ┌─────────────────────────────────────────┐
│ MCP Client │────▶│ FastMCP Server │
│ (Claude, etc) │ │ │
└─────────────────┘ │ ┌─────────────────┐ ┌──────────────┐ │
│ │ MIDI + JSON │ │ Piano Roll │ │
│ │ Tools │ │ Tools (JSON) │ │
│ └────────┬────────┘ └──────┬───────┘ │
└───────────┼──────────────────┼──────────┘
│ │
MIDI + JSON JSON Files +
│ Keystroke
▼ ▼
┌─────────────────────────────────────────┐
│ FL Studio │
│ ┌──────────────┐ ┌──────────────────┐ │
│ │FLStudioMCP │ │ Piano Roll Script│ │
│ │(MIDI Ctrl) │ │ (ComposeWithLLM) │ │
│ └──────────────┘ └──────────────────┘ │
└─────────────────────────────────────────┘
Como Funciona
Transporte / Mixer / Canais / Plugins:
- O servidor MCP escreve o comando em um arquivo JSON
- Envia nota de disparo MIDI para o FL Studio
- O script de controle do FL Studio lê o JSON, executa a API, escreve a resposta
- O servidor MCP lê a resposta
Piano Roll:
- O servidor MCP escreve solicitações de notas em um arquivo JSON
- Envia atalho de teclado (Cmd+Opt+Y no macOS, Ctrl+Alt+Y no Windows) para disparar o script do FL Studio — no Windows, a janela do FL Studio é trazida para o primeiro plano primeiro para que o atalho realmente chegue até ela
- O script do Piano Roll lê o JSON e modifica as notas
Desenvolvimento
Pré-requisitos
- Python 3.10+
- uv (recomendado)
Configuração
# Install all dependencies including dev extras
uv sync --dev
# Or with pip
pip install -e ".[dev]"
Comandos Disponíveis
| Comando | Descrição |
|---|---|
uv run fl-studio-mcp | Executar o servidor MCP |
uv run ruff check . | Verificar o código-fonte (lint) |
uv run ruff check --fix . | Verificar e corrigir automaticamente |
uv run pytest | Executar testes |
Estrutura do Projeto
fl-studio-mcp/
├── fl_controller/
│ └── device_FLStudioMCP.py # FL Studio MIDI controller script (runs inside FL Studio)
├── scripts/
│ ├── setup.sh # FL Studio script installer
│ ├── install_mcp_for_claude.sh # Claude config installer (macOS/Linux)
│ ├── install_mcp_for_claude.ps1# Claude config installer (Windows)
│ └── ComposeWithLLM.pyscript # Piano Roll script (runs inside FL Studio)
├── src/fl_studio_mcp/
│ ├── server.py # FastMCP server entry point
│ ├── tools/ # MCP tool implementations
│ │ ├── channels.py
│ │ ├── mixer.py
│ │ ├── piano_roll.py
│ │ ├── plugins.py
│ │ └── transport.py
│ └── utils/
│ ├── connection.py # FL Studio connection wrapper
│ ├── fl_trigger.py # Piano roll keystroke trigger
│ └── midi_connection.py # MIDI + JSON communication layer
├── install.sh # One-command installer (macOS/Linux)
└── install.ps1 # One-command installer (Windows)
Créditos
- FL Studio API Stubs — Documentação da API
- FastMCP — Framework do servidor MCP
- mido — Biblioteca MIDI para Python
- calvinw/fl-studio-mcp — Abordagem de integração com o Piano Roll
- Image-Line — FL Studio
Contribuindo
Contribuições são bem-vindas! Sinta-se à vontade para abrir uma issue ou um pull request.
Apenas um aviso: este projeto ainda não possui uma suíte de testes adequada, CI ou processo de revisão para PRs. Sou um estudante mantendo isso no meu tempo livre, então as mudanças são testadas principalmente manualmente no FL Studio. Se você quiser ajudar a configurar testes ou um fluxo de contribuição mais suave, essa ajuda é especialmente bem-vinda.
Licença
MIT