flemcee
 
FL Studio的MCP服务器由 flapi Python客户端。它暴露了 通过Flapi在FL Studio中执行Python来控制FL Studio。
看 /Users/tylertt/flemcee/WORKLOG.md 获取实施摘要和 /Users/tylertt/flemcee/ROADMAP.md 对于未来的计划。
先决条件
flapi安装并运行(FL Studio配置了Flapi脚本)。- FL Studio在加载Flapi服务器的情况下运行。
- macOS:保留
flapi port-hostFL Studio打开时运行。
安装
python -m venv .venv
source .venv/bin/activate
pip install -U pip
pip install -e .跑
默认MCP传输是可流式传输的HTTP:
python -m flemcee要使用stdio传输,请执行以下操作:
FLEMCEE_TRANSPORT=stdio python -m flemcee配置
环境变量:
FLEMCEE_TRANSPORT:MCP传输(streamable-http,stdio,或sse).FLEMCEE_REQ_PORT:MIDI请求端口名称(默认值:Flapi Request).FLEMCEE_RES_PORT:MIDI响应端口名称(默认值:Flapi Response).FLEMCEE_CONNECT_ON_START:设置为true在启动时连接到FL Studio。FLEMCEE_LOG_LEVEL:日志记录级别(默认值:INFO).FLEMCEE_HOST:MCP传输支持时的服务器主机(默认值:127.0.0.1).FLEMCEE_PORT:MCP传输支持时的服务器端口(默认值:8000).FLEMCEE_MOUNT_PATH:HTTP传输的可选基装载路径。FLEMCEE_STREAMABLE_HTTP_PATH:可选的可流式传输HTTP端点路径。FLEMCEE_SSE_PATH:可选的SSE端点路径。FLEMCEE_GENERATE_TOOLS:设置为true从存根中注册每个功能的工具(默认值:true).FLEMCEE_CURATED_TOOLS:设置为true注册策划的高级工具(默认:true).
MCP工具
fl_connect(force: bool = false)fl_disconnect()fl_status()fl_exec(code: str)fl_eval(expression: str)fl_call(target: str, args: list = [], kwargs: dict = {})fl_catalog(module: str | None = None, include_docs: bool = False)fl_symbol_lookup(symbol: str, include_docs: bool = False)fl_symbol_resolve(target: str, include_docs: bool = False)
精心策划的工具(启动时自动生成):
fl_session_summary()fl_transport_play()fl_transport_stop()fl_transport_record_toggle()fl_transport_set_loop_mode(mode: str | int)fl_transport_set_song_pos(position: float | int, mode: int = -1)fl_project_set_tempo(bpm: float)fl_channel_list(global_count: bool = False, use_global_index: bool = False)fl_channel_set(index: int, name: str | None, color: int | None, volume: float | None, pan: float | None, pitch: float | None, target_fx_track: int | None, use_global_index: bool = False)fl_channel_select(index: int, use_global_index: bool = False)fl_pattern_list(include_defaults: bool = False)fl_pattern_select(index: int)fl_pattern_rename(index: int, name: str)fl_sequencer_set_steps(channel_index: int, steps: list[int], value: bool = True, use_global_index: bool = False)fl_sequencer_clear_steps(channel_index: int, length: int = 16, use_global_index: bool = False)fl_mixer_list_tracks(max_tracks: int = 125)fl_mixer_set_track(index: int, volume: float | None, pan: float | None, mute: bool | None, solo: bool | None, arm: bool | None)fl_mixer_route(source_index: int, dest_index: int, enabled: bool = True, level: float | None = None, update_ui: bool = True)fl_plugin_list_params(index: int, slot_index: int = -1, limit: int = 64, use_global_index: bool = False)fl_plugin_set_param(index: int, param_index: int, value: float, slot_index: int = -1, use_global_index: bool = False)fl_plugin_next_preset(index: int, slot_index: int = -1, use_global_index: bool = False)fl_beat_make_hiphop(kick_channel: int, snare_channel: int, hat_channel: int, bars: int = 1, style: str = \"boom_bap\")fl_mix_balance_peaks(track_indices: list[int], target_peak: float = 0.8, mode: int = 2, min_volume: float = 0.0, max_volume: float = 1.0, max_change: float | None = 0.2)
MCP资源
flstudio://catalogflstudio://module/{module}
备注
fl_exec和fl_eval在FL Studio的Python环境中运行。- 使用
fl_call为了方便(例如。target="transport.start"). - API目录工具从
fl-studio-api-stubs,在可用时提供签名和文件。 - 启用基于存根的工具生成时,每个顶级FL Studio函数都注册为一个名为的工具
fl__.
例子
看 /Users/tylertt/flemcee/EXAMPLES.md 对于完整的工作流:
- “听这个项目并做混音”
- “把这个循环按顺序变成一个完整的嘻哈节拍”
