2323from fastmcp import FastMCP
2424
2525from . import __version__
26+ from . import prompts as prompt_defs
2627from .connection import list_ports
2728from .protocol import port_from_fl_name , port_to_fl_name
2829from .runtime_config import DEFAULT_SSE_HOST , DEFAULT_SSE_PORT
3637from .tools import color as color_tools
3738from .tools import compose as compose_tools
3839from .tools import effect as effect_domain_tools
39- from .tools import effects as effects_tools
4040from .tools import export as export_tools
4141from .tools import knowledgebase as knowledgebase_tools
4242from .tools import mix_doctor as mix_doctor_tools
4343from .tools import mixer as mixer_tools
4444from .tools import mixer_core as mixer_core_tools
4545from .tools import mixing as mixing_tools
4646from .tools import pattern as pattern_domain_tools
47- from .tools import patterns_playlist as patterns_playlist_tools
4847from .tools import pianoroll as pianoroll_tools
4948from .tools import playlist as playlist_domain_tools
5049from .tools import plugin as plugin_tools
5655from .tools import routing as routing_tools
5756from .tools import transport as transport_tools
5857from .tools import workflow_context as workflow_context_tools
59- from . import prompts as prompt_defs
6058
6159logger = logging .getLogger ("fls_pilot" )
6260
63- _LEGACY_LOW_LEVEL_TOOLS = {
64- # Transport one-off aliases. Use fl_transport(action, params).
65- "fl_ping" ,
66- "fl_get_tempo" ,
67- "fl_set_tempo" ,
68- "fl_play" ,
69- "fl_stop" ,
70- "fl_toggle_play" ,
71- "fl_record" ,
72- "fl_get_play_state" ,
73- "fl_get_song_position" ,
74- "fl_set_song_position" ,
75- "fl_get_time_signature" ,
76- "fl_set_time_signature" ,
77- # Mixer/channel core aliases. Use fl_mixer/fl_channel or retained safety tools.
78- "fl_get_mixer_state" ,
79- "fl_get_channel_state" ,
80- "fl_set_mixer_volume" ,
81- "fl_set_mixer_pan" ,
82- "fl_set_mixer_mute" ,
83- "fl_set_mixer_solo" ,
84- "fl_set_mixer_name" ,
85- "fl_set_channel_volume" ,
86- "fl_set_channel_pan" ,
87- "fl_set_channel_mute" ,
88- "fl_set_channel_solo" ,
89- "fl_mixer_list_tracks" ,
90- "fl_mixer_get_track" ,
91- "fl_mixer_set_volume" ,
92- "fl_mixer_set_pan" ,
93- "fl_mixer_set_mute" ,
94- "fl_mixer_set_solo" ,
95- "fl_mixer_select_track" ,
96- "fl_mixer_get_route" ,
97- "fl_mixer_set_route" ,
98- "fl_mixer_set_stereo_separation" ,
99- # Channel organizer aliases that are covered by fl_channel.
100- "fl_get_channel_details" ,
101- "fl_set_channel_name" ,
102- "fl_set_channel_mixer_track" ,
103- "fl_channel_get_grid" ,
104- "fl_channel_set_grid_bit" ,
105- "fl_channel_set_step_param" ,
106- "fl_channel_set_steps" ,
107- "fl_channel_clear_grid" ,
108- "fl_classify_channels" ,
109- # Routing one-off aliases covered by fl_mixer route actions.
110- "fl_get_routing" ,
111- "fl_set_route" ,
112- # Pattern and playlist one-off aliases. Use fl_pattern/fl_playlist.
113- "fl_pattern_list" ,
114- "fl_pattern_get" ,
115- "fl_pattern_get_length" ,
116- "fl_pattern_select" ,
117- "fl_pattern_rename" ,
118- "fl_pattern_set_color" ,
119- "fl_pattern_set_length" ,
120- "fl_pattern_find_empty" ,
121- "fl_playlist_list_tracks" ,
122- "fl_playlist_get_track" ,
123- "fl_playlist_set_mute" ,
124- "fl_playlist_set_solo" ,
125- "fl_playlist_set_name" ,
126- "fl_playlist_set_color" ,
127- "fl_playlist_select_track" ,
128- # Effect slot and native EQ one-off aliases. Use fl_effect.
129- "fl_effect_get_slot" ,
130- "fl_effect_list_slots" ,
131- "fl_effect_set_slot_mix" ,
132- "fl_effect_get_track_slots_enabled" ,
133- "fl_effect_set_track_slots_enabled" ,
134- "fl_effect_set_slot_enabled" ,
135- "fl_eq_get" ,
136- "fl_eq_set_band" ,
137- # Already-loaded plugin parameter aliases. Use fl_plugin.
138- "fl_plugin_list" ,
139- "fl_plugin_get_params" ,
140- "fl_plugin_set_param" ,
141- "fl_plugin_list_params" ,
142- "fl_plugin_get_param" ,
143- # Piano Roll one-off aliases. Use fl_piano_roll.
144- "fl_write_piano_roll_notes" ,
145- "fl_quantize_pattern" ,
146- "fl_piano_write_notes" ,
147- "fl_piano_write_chord" ,
148- "fl_piano_clear" ,
149- "fl_piano_quantize" ,
150- "fl_piano_transpose" ,
151- "fl_piano_duplicate" ,
152- "fl_piano_velocity_ramp" ,
153- "fl_piano_probe_return_channel" ,
154- "fl_piano_add_marker" ,
155- "fl_piano_add_time_signature_marker" ,
156- "fl_piano_clear_markers" ,
157- "fl_piano_get_notes" ,
158- }
159-
16061
16162SERVER_INSTRUCTIONS = """\
16263 FL Studio Pilot server -- control FL Studio from an AI assistant.
@@ -219,7 +120,6 @@ def build_server() -> FastMCP:
219120 channel_tools .register (mcp ) # Channel organizer: details, names, mixer assignment
220121 pianoroll_tools .register (mcp ) # Phase 2: write notes into the piano roll
221122 plugin_tools .register (mcp ) # Phase 1B: plugin param read/write (name or index)
222- effects_tools .register (mcp ) # Effect slot + native EQ pack
223123 mixing_tools .register (mcp ) # Slice B: high-level EQ mixing intents
224124 routing_tools .register (mcp ) # Routing/cleanup Slice 1: read-only
225125 bulk_tools .register (mcp ) # Bulk mute/solo: server-side group orchestration
@@ -234,12 +134,9 @@ def build_server() -> FastMCP:
234134 export_tools .register (mcp ) # MIDI export: arrangement spec -> type-1 .mid on disk
235135 presets_tools .register (mcp ) # Preset suggester: read preset names from disk
236136 mix_doctor_tools .register (mcp ) # Mix Review: diagnose whole mix + gated adjustments
237- patterns_playlist_tools .register (mcp ) # Phase 3: Patterns & Playlist pack
238137 knowledgebase_tools .register (mcp ) # KB Tools
239138 workflow_context_tools .register (mcp ) # Workflow context: read-only fl_get_workflow_context
240139 prompt_defs .register (mcp ) # MCP Prompts: guided workflow templates
241- for name in sorted (_LEGACY_LOW_LEVEL_TOOLS ):
242- mcp .local_provider .remove_tool (name )
243140 return mcp
244141
245142
0 commit comments