使用说明
flai mcp
MCP服务器,将克劳德连接到FL工作室,用于人工智能辅助音乐制作。
状态: 阿尔法——功能核心,积极开发。欢迎捐款。
Claude Code / Claude Desktop / Cursor
│ MCP (stdio)
▼
flai-mcp server (Python)
│
Virtual MIDI (SysEx)
(IAC Driver / loopMIDI)
│
device_flai.py
(MIDI controller script
running inside FL Studio)
它能做什么
| 类别 | 功能 |
|---|---|
| 运输 | 播放、停止、录制、获得/设定节奏、寻求突破/击败 |
| 混音器 | 获取/设置任何曲目的音量、平移、静音、独奏、名称、颜色 |
| 通道机架 | 获取/设置音量、摇摄、音高、名称、静音、混音器路由 |
| 模式 | 列出、重命名、重新着色、克隆、在模式之间导航 |
| 备注 | 通过步进音序器API将音符写入具有音高、速度和时间的模式 |
| 插件 | 列出参数、获取/设置值、循环预设 |
| 安排 | 添加/列出时间线标记,获取播放头位置 |
| 播放列表 | 播放列表曲目的名称和颜色 |
示例提示
“在模式1中写一个四人落地踢腿模式”
“在FLEX低音频道的模式5中添加a小调的滚动低音线”
“将混音器轨道2上的踢腿音量调低3dB,并用力摇高帽子”
“将通道4的截止设置为60%,共振设置为25%”
为Intro、Buildup、Drop、Breakdown和Outro添加排列标记
已知限制
- 播放列表剪辑位置 -FL Studio的脚本API不公开任何在排列时间线上放置模式剪辑的功能。这是来自Image-Line的API缺口,而不是flai-mcp限制。图案必须手动排列。 (API审核)
- 笔记书写使用步序器 --注释是通过以下方式编写的
setGridBit+setStepParameterByIndex。这适用于1/16音符量化的鼓和旋律模式。通过shift参数支持子步计时,但它不如Piano Roll灵活。 - Piano Roll脚本无法在macOS上进行文件I/O --FL Studio的嵌入式Python
open()在macOS上已损坏,因此基于文件的钢琴滚桥无法工作。步进排序器方法是当前的解决方法。 - 温度设置 --需要FL Studio 21+。对于旧版本,请使用FL Studio UI。
设置
1.虚拟MIDI端口
macOS(IAC驱动程序-内置,免费)
- 打开 音频MIDI设置 (聚光灯→ “音频MIDI设置”)
- 窗口→ 显示MIDI工作室
- 双击 IAC驾驶员 → check 设备已联机
- 添加两个端口:
FLAI In和FLAI Out
Windows(loopMIDI-免费)
- 安装 loopMIDI
- 创建两个端口:
FLAI In和FLAI Out
2.安装flai-mcp
# Clone
git clone https://github.com/kaupau/flai-mcp.git
cd flai-mcp
# Create venv and install (requires Python 3.11+)
uv venv --python 3.11 .venv
uv pip install -e .
# Or with pip
python -m venv .venv
source .venv/bin/activate
pip install -e .
3.安装FL Studio桥接脚本
python scripts/install_fl_bridge.py
或手动复制 fl_bridge/device_flai.py 致:
- macOS:
~/Documents/Image-Line/FL Studio/Settings/Hardware/FLAI/device_flai.py - 窗户:
%USERPROFILE%\Documents\Image-Line\FL Studio\Settings\Hardware\FLAI\device_flai.py
4.配置FL Studio
- 开放式FL工作室
- 选项→ MIDI设置
- 输入部分:
- 选择
IAC Driver FLAI In(或FLAI In在Windows上) - 集 控制器类型 到 福莱
- 集 港口 到
1 - 点击 启用
- 选择
- 输出部分:
- 选择
IAC Driver FLAI Out(或FLAI Out在Windows上) - 集 港口 到
1 - 点击 启用
- 选择
验证它是否正常工作:打开 View → 脚本输出 --您应该看到:
[FLAI] MCP Bridge initialized. Ready.
[FLAI] Input port: IAC Driver FLAI In
5.配置您的AI客户端
克劳德代码 --添加到 ~/.claude/settings.json:
{
"mcpServers": {
"flai": {
"command": "/path/to/flai-mcp/.venv/bin/flai-mcp",
"args": ["--midi-in", "IAC Driver FLAI In", "--midi-out", "IAC Driver FLAI Out"]
}
}
}
光标 --添加到 ~/.cursor/mcp.json (格式相同)。
克劳德桌面 --添加到 claude_desktop_config.json:
{
"mcpServers": {
"flai": {
"command": "/path/to/flai-mcp/.venv/bin/flai-mcp",
"args": ["--midi-in", "IAC Driver FLAI In", "--midi-out", "IAC Driver FLAI Out"]
}
}
}
6.验证
# List available MIDI ports
flai-mcp --list-ports
# Run with debug logging
flai-mcp --log-level DEBUG
建筑
src/flai_mcp/
├── server.py — MCP server assembly
├── __main__.py — CLI entry point (flai-mcp)
├── bridges/
│ └── midi_bridge.py — async SysEx ↔ asyncio bridge via mido
├── protocol/
│ ├── commands.py — command/status enums
│ └── encoding.py — SysEx ↔ JSON serialization
└── tools/
├── transport.py — play/stop/tempo/position
├── mixer.py — mixer track controls
├── channels.py — channel rack controls
├── patterns.py — pattern management
├── piano_roll.py — note writing (step sequencer API)
├── plugins.py — plugin parameters & presets
└── arrangement.py — timeline markers
fl_bridge/
└── device_flai.py — FL Studio MIDI Controller Script
协议
命令是带有JSON有效载荷的SysEx消息:
Request: [0xF0, 0x7D, CMD_ID, REQ_ID, <ascii-json>, 0xF7]
Response: [0xF0, 0x7D, 0x70, REQ_ID, STATUS, <ascii-json>, 0xF7]
0x7D--SysEx制造商ID保留用于非商业/教育用途- JSON使用
ensure_ascii=True因此,所有有效载荷字节都是0x00–0x7F(SysEx安全) - 响应由以下内容匹配
REQ_ID(0–127,旋转计数器)
如何写笔记
FL Studio的MIDI控制器脚本API没有公开钢琴卷音符编辑。这 flpianoroll 该模块仅在Piano Roll Scripts中工作,该脚本在macOS上在单独的Python上下文中运行,文件I/O中断。
flai mcp通过 步进定序器API:
channels.setGridBit(channel, step, on/off)--启用/禁用步骤channels.setStepParameterByIndex(channel, pattern, step, param, value)--设置每一步的音高、速度、摇摄和计时
这为每个音符提供了对音高(参数0)、速度(参数1)、摇摄(参数4)和微定时(参数7)的控制。
发展
git clone https://github.com/kaupau/flai-mcp.git
cd flai-mcp
uv venv --python 3.11 .venv
uv pip install -e ".[dev]"
# Run protocol tests (no FL Studio needed)
pytest
# Check ports
flai-mcp --list-ports
添加新工具
- 将命令ID添加到
src/flai_mcp/protocol/commands.py - 在中添加处理程序
fl_bridge/device_flai.py→_HANDLERS调度表 - 在中添加MCP工具
src/flai_mcp/tools/*.py - 重新安装FL Studio脚本:
python scripts/install_fl_bridge.py
贡献
欢迎投稿!一些需要工作的领域:
- [ ] 钢琴滚音符书写 --找到一种使用方法
flpianoroll.score.addNote()以编程方式(来自的子流程IPC方法 音乐副驾驶 很有希望) - [ ] 播放列表剪辑位置 --大堂图像线
playlist.addClip()API,或探索.flp通过以下方式操作文件 PyFLP - [ ] Windows测试 --loopMIDI设置、路径处理
- [ ] 自动化剪辑 --创建和操作自动化
- [ ] 更好的节奏控制 —
mixer.setCurrentTempo()并非所有版本都存在 - [ ] 音频渲染 -如果API允许,则支持导出/反弹
许可证
麻省理工学院