26569c7015
- logs/ardour_mcp_server.log Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2.1 MiB
2.1 MiB
2026-06-27T18:39:28.172640Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sat, 27 Jun 2026 20:39:28 +0200
======================================================================
2026-06-27T18:39:28.172668Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-27T18:39:28.172698Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-27T18:39:28.172701Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-27T18:39:28.172704Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-27T18:39:28.172863Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-27T18:39:28.172975Z ERROR ardour_mcp_server: MCP Server serving error: Custom { kind: UnexpectedEof, error: "expect initialize notification" }
2026-06-27T18:39:39.680650Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sat, 27 Jun 2026 20:39:39 +0200
======================================================================
2026-06-27T18:39:39.680690Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-27T18:39:39.680726Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-27T18:39:39.680733Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-27T18:39:39.680738Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-27T18:39:39.680940Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-27T18:39:39.681118Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2024-11-05"), capabilities: ClientCapabilities { experimental: None, roots: None, sampling: None }, client_info: Implementation { name: "smoke", version: "0" } }
2026-06-27T18:39:39.681152Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-27T18:39:39.681197Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(2)))
2026-06-27T18:39:39.681214Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-27T18:39:39.681221Z INFO rmcp::service: received request id=2 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-27T18:39:39.681266Z INFO ardour_mcp_server: Tokio UDP socket for OSC bound to 127.0.0.1:9099
2026-06-27T18:39:39.681492Z INFO rmcp::service: response message id=2 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }] })
2026-06-27T18:39:39.681621Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }] }), Number(2)))
2026-06-27T18:39:41.677357Z INFO rmcp::service: input stream terminated
2026-06-27T18:39:41.677397Z INFO rmcp::service: serve finished quit_reason=Closed
2026-06-27T18:39:41.677450Z INFO ardour_mcp_server: Ardour MCP server stopped.
2026-06-28T00:58:01.469430Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 02:58:01 +0200
======================================================================
2026-06-28T00:58:01.469465Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T00:58:01.469492Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T00:58:01.469498Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T00:58:01.469501Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T00:58:01.469617Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T00:58:01.491839Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 02:58:01 +0200
======================================================================
2026-06-28T00:58:01.491877Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T00:58:01.491907Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T00:58:01.491913Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T00:58:01.491918Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T00:58:01.492061Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T00:58:01.571711Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T00:58:01.571786Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T00:58:01.571833Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T00:58:01.571835Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T00:58:01.571847Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T00:58:01.571864Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T00:58:01.571865Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T00:58:01.571881Z INFO ardour_mcp_server: Tokio UDP socket for OSC bound to 127.0.0.1:9099
2026-06-28T00:58:01.571885Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T00:58:01.571892Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T00:58:01.571901Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T00:58:01.572042Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }] })
2026-06-28T00:58:01.572118Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }] }), Number(1)))
2026-06-28T00:58:01.589367Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T00:58:01.589414Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T00:58:01.589455Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T00:58:01.589463Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T00:58:01.589475Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T00:58:01.589494Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T00:58:01.589498Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T00:58:01.589515Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T00:58:01.589519Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T00:58:01.589524Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T00:58:01.589547Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T00:58:01.589678Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-28T00:58:01.589759Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-28T01:13:35.444743Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 03:13:35 +0200
======================================================================
2026-06-28T01:13:35.444781Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T01:13:35.444811Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T01:13:35.444818Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T01:13:35.444823Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T01:13:35.444981Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T01:13:35.528971Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T01:13:35.529031Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T01:13:35.529092Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T01:13:35.529099Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T01:13:35.529112Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T01:13:35.529134Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T01:13:35.529138Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T01:13:35.529155Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T01:13:35.529155Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T01:13:35.529165Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T01:13:35.529177Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T01:13:35.529306Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }] })
2026-06-28T01:13:35.529390Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }] }), Number(1)))
2026-06-28T05:00:55.902274Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 07:00:55 +0200
======================================================================
2026-06-28T05:00:55.902312Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T05:00:55.902347Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T05:00:55.902350Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T05:00:55.902355Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T05:00:55.902516Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T05:00:55.960968Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T05:00:55.961003Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T05:00:55.961065Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T05:00:55.961081Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T05:00:55.961097Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T05:00:55.961114Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T05:00:55.961124Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T05:00:55.961128Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T05:00:55.961143Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T05:00:55.961152Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T05:00:55.961162Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T05:00:55.961255Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }] })
2026-06-28T05:00:55.961346Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }] }), Number(1)))
2026-06-28T05:07:12.520034Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 07:07:12 +0200
======================================================================
2026-06-28T05:07:12.520078Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T05:07:12.520108Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T05:07:12.520114Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T05:07:12.520118Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T05:07:12.520290Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T05:07:12.582391Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T05:07:12.582424Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T05:07:12.582456Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T05:07:12.582465Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T05:07:12.582484Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T05:07:12.582505Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T05:07:12.582510Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T05:07:12.582511Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T05:07:12.582527Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T05:07:12.582544Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T05:07:12.582556Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T05:07:12.582615Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-28T05:07:12.582717Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-28T11:59:32.608680Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 13:59:32 +0200
======================================================================
2026-06-28T11:59:32.608708Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T11:59:32.608729Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T11:59:32.608737Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T11:59:32.608739Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T11:59:32.608884Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T11:59:32.665313Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T11:59:32.665353Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T11:59:32.665386Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T11:59:32.665397Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T11:59:32.665405Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T11:59:32.665414Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T11:59:32.665417Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T11:59:32.665437Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T11:59:32.665450Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T11:59:32.665448Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T11:59:32.665462Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T11:59:32.665583Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-28T11:59:32.665668Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-28T12:55:07.087209Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 14:55:07 +0200
======================================================================
2026-06-28T12:55:07.087249Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T12:55:07.087283Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T12:55:07.087289Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T12:55:07.087295Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T12:55:07.087454Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T12:55:07.164128Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T12:55:07.164184Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T12:55:07.164225Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T12:55:07.164231Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T12:55:07.164255Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T12:55:07.164274Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T12:55:07.164277Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T12:55:07.164288Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T12:55:07.164293Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T12:55:07.164302Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T12:55:07.164312Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T12:55:07.164437Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-28T12:55:07.164510Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-28T13:44:55.686725Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 15:44:55 +0200
======================================================================
2026-06-28T13:44:55.686904Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T13:44:55.686967Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T13:44:55.686977Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T13:44:55.686983Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T13:44:55.687168Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T13:44:55.746636Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T13:44:55.746713Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T13:44:55.746749Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T13:44:55.746772Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T13:44:55.746782Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T13:44:55.746793Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T13:44:55.746791Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T13:44:55.746795Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T13:44:55.746804Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T13:44:55.746816Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T13:44:55.746822Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T13:44:55.746945Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-28T13:44:55.747015Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-28T14:49:59.132937Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 16:49:59 +0200
======================================================================
2026-06-28T14:49:59.132971Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T14:49:59.132990Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T14:49:59.132992Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T14:49:59.132995Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T14:49:59.133082Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T14:49:59.173642Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T14:49:59.173687Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T14:49:59.173710Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T14:49:59.173716Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T14:49:59.173724Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T14:49:59.173735Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T14:49:59.173736Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T14:49:59.173745Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T14:49:59.173751Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T14:49:59.173754Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T14:49:59.173758Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T14:49:59.173840Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-28T14:49:59.173885Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-28T15:08:27.896841Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 17:08:27 +0200
======================================================================
2026-06-28T15:08:27.896878Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T15:08:27.896913Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T15:08:27.896916Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T15:08:27.896923Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T15:08:27.897224Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T15:08:27.931999Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T15:08:27.932058Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T15:08:27.932087Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T15:08:27.932088Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T15:08:27.932097Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T15:08:27.932117Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T15:08:27.932119Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T15:08:27.932129Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T15:08:27.932130Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T15:08:27.932134Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T15:08:27.932142Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T15:08:27.932276Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-28T15:08:27.932354Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-28T15:53:29.441762Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 17:53:29 +0200
======================================================================
2026-06-28T15:53:29.441834Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T15:53:29.441878Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T15:53:29.441885Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T15:53:29.441890Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T15:53:29.442095Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T15:53:29.517520Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T15:53:29.517587Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T15:53:29.517638Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T15:53:29.517645Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T15:53:29.517698Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T15:53:29.517724Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T15:53:29.517728Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T15:53:29.517731Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T15:53:29.517761Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T15:53:29.517773Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T15:53:29.517786Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T15:53:29.517919Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-28T15:53:29.518002Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-28T16:23:05.280508Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 18:23:05 +0200
======================================================================
2026-06-28T16:23:05.280555Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T16:23:05.280603Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T16:23:05.280607Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T16:23:05.280613Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T16:23:05.281092Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T16:23:05.319365Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 18:23:05 +0200
======================================================================
2026-06-28T16:23:05.319398Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T16:23:05.319435Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T16:23:05.319440Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T16:23:05.319443Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T16:23:05.319580Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T16:23:05.373238Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T16:23:05.373306Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T16:23:05.373347Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T16:23:05.373367Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T16:23:05.373390Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T16:23:05.373417Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T16:23:05.373416Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T16:23:05.373422Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T16:23:05.373446Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T16:23:05.373470Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T16:23:05.373485Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T16:23:05.373557Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }] })
2026-06-28T16:23:05.373624Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }] }), Number(1)))
2026-06-28T16:23:05.390600Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T16:23:05.390676Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T16:23:05.391893Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T16:23:05.391895Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T16:23:05.391929Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T16:23:05.391961Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T16:23:05.391965Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T16:23:05.392002Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T16:23:05.392000Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T16:23:05.392016Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T16:23:05.392030Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T16:23:05.392147Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }] })
2026-06-28T16:23:05.392240Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }] }), Number(1)))
2026-06-28T18:59:25.179246Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 20:59:25 +0200
======================================================================
2026-06-28T18:59:25.179326Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T18:59:25.179387Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T18:59:25.179394Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T18:59:25.179399Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T18:59:25.179875Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T18:59:25.183240Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 20:59:25 +0200
======================================================================
2026-06-28T18:59:25.183307Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T18:59:25.183359Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T18:59:25.183364Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T18:59:25.183368Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T18:59:25.183566Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T18:59:25.385072Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T18:59:25.385202Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T18:59:25.385281Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T18:59:25.385300Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T18:59:25.385320Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T18:59:25.385322Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T18:59:25.385370Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T18:59:25.385386Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T18:59:25.385404Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T18:59:25.385704Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T18:59:25.385790Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T18:59:25.386055Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-28T18:59:25.386158Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-28T18:59:25.494585Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 20:59:25 +0200
======================================================================
2026-06-28T18:59:25.494677Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T18:59:25.494762Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T18:59:25.494768Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T18:59:25.494775Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T18:59:25.495948Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T18:59:25.522951Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 20:59:25 +0200
======================================================================
2026-06-28T18:59:25.523033Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T18:59:25.523083Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T18:59:25.523089Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T18:59:25.523095Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T18:59:25.541296Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T18:59:25.577791Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T18:59:25.577877Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T18:59:25.577945Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T18:59:25.577960Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T18:59:25.577981Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T18:59:25.577984Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T18:59:25.578016Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T18:59:25.578077Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T18:59:25.578261Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }] })
2026-06-28T18:59:25.578341Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T18:59:25.578350Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T18:59:25.578360Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }] }), Number(1)))
2026-06-28T18:59:25.578637Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T18:59:25.607444Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 20:59:25 +0200
======================================================================
2026-06-28T18:59:25.607495Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T18:59:25.607557Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T18:59:25.607563Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T18:59:25.607567Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T18:59:25.609675Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T18:59:25.703443Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 20:59:25 +0200
======================================================================
2026-06-28T18:59:25.703512Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T18:59:25.703563Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T18:59:25.703569Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T18:59:25.703574Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T18:59:25.703775Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T18:59:25.879413Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T18:59:25.879539Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T18:59:25.881133Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T18:59:25.881250Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T18:59:25.881591Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T18:59:25.881610Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T18:59:25.881636Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T18:59:25.881640Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T18:59:25.881864Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-28T18:59:25.881962Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T18:59:25.881972Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T18:59:25.881982Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-28T18:59:25.882826Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T18:59:25.958885Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T18:59:25.958975Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T18:59:25.959042Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T18:59:25.959059Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T18:59:25.959080Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T18:59:25.959084Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T18:59:25.959150Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T18:59:25.959218Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T18:59:25.959447Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }] })
2026-06-28T18:59:25.959549Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T18:59:25.959562Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T18:59:25.959572Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }] }), Number(1)))
2026-06-28T18:59:25.961724Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T18:59:26.035844Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T18:59:26.035942Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T18:59:26.036762Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T18:59:26.036796Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T18:59:26.036821Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T18:59:26.036840Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T18:59:26.036860Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T18:59:26.036872Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T18:59:26.036886Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T18:59:26.037873Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T18:59:26.037987Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T18:59:26.038160Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }] })
2026-06-28T18:59:26.038742Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T18:59:26.038819Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T18:59:26.038871Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T18:59:26.038884Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T18:59:26.038909Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T18:59:26.038913Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T18:59:26.038933Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T18:59:26.038943Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T18:59:26.038955Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T18:59:26.038911Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }] }), Number(1)))
2026-06-28T18:59:26.039135Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T18:59:26.039132Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-28T18:59:26.039196Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T18:59:26.039736Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-28T20:10:15.978644Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 22:10:15 +0200
======================================================================
2026-06-28T20:10:15.978762Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T20:10:15.978842Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T20:10:15.978852Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T20:10:15.978859Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T20:10:15.979782Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T20:10:15.993510Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 22:10:15 +0200
======================================================================
2026-06-28T20:10:15.993570Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T20:10:15.993631Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T20:10:15.993688Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T20:10:15.993696Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T20:10:15.993909Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T20:10:16.025747Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 22:10:16 +0200
======================================================================
2026-06-28T20:10:16.025800Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T20:10:16.025845Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T20:10:16.025849Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T20:10:16.025855Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T20:10:16.028368Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T20:10:16.038104Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 22:10:16 +0200
======================================================================
2026-06-28T20:10:16.038156Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T20:10:16.038208Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T20:10:16.038213Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T20:10:16.038217Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T20:10:16.038881Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T20:10:16.225450Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T20:10:16.225611Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T20:10:16.225628Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T20:10:16.225650Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T20:10:16.225653Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T20:10:16.225726Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T20:10:16.225764Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T20:10:16.225780Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T20:10:16.225822Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T20:10:16.225877Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T20:10:16.225961Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T20:10:16.226171Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }] })
2026-06-28T20:10:16.226706Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }] }), Number(1)))
2026-06-28T20:10:16.255746Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T20:10:16.255871Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T20:10:16.255949Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T20:10:16.255975Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T20:10:16.256001Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T20:10:16.256004Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T20:10:16.256024Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T20:10:16.256040Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T20:10:16.256064Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T20:10:16.256294Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }] })
2026-06-28T20:10:16.256358Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T20:10:16.256425Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T20:10:16.256463Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }] }), Number(1)))
2026-06-28T20:10:16.307568Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T20:10:16.307689Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T20:10:16.307763Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T20:10:16.307771Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T20:10:16.307785Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T20:10:16.307800Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T20:10:16.307802Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T20:10:16.307824Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T20:10:16.307852Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T20:10:16.307857Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T20:10:16.307864Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T20:10:16.307994Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-28T20:10:16.308063Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-28T20:10:16.327776Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T20:10:16.327874Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T20:10:16.327911Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T20:10:16.327930Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T20:10:16.327946Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T20:10:16.327970Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T20:10:16.327973Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T20:10:16.327975Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T20:10:16.327998Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T20:10:16.328008Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T20:10:16.328020Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T20:10:16.328175Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }] })
2026-06-28T20:10:16.328265Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }] }), Number(1)))
2026-06-28T20:21:36.409109Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 22:21:36 +0200
======================================================================
2026-06-28T20:21:36.409160Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T20:21:36.409199Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T20:21:36.409205Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T20:21:36.409210Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T20:21:36.409422Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T20:21:36.473277Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T20:21:36.473325Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T20:21:36.473379Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T20:21:36.473389Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T20:21:36.473406Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T20:21:36.473420Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T20:21:36.473430Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T20:21:36.473441Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T20:21:36.473444Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T20:21:36.473448Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T20:21:36.473457Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T20:21:36.473584Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }] })
2026-06-28T20:21:36.473694Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }] }), Number(1)))
2026-06-29T00:53:07.485171Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Mon, 29 Jun 2026 02:53:07 +0200
======================================================================
2026-06-29T00:53:07.485214Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-29T00:53:07.485249Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-29T00:53:07.485255Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-29T00:53:07.485261Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-29T00:53:07.485602Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-29T00:53:07.547708Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-29T00:53:07.547762Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-29T00:53:07.547807Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-29T00:53:07.547828Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-29T00:53:07.547831Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-29T00:53:07.547857Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-29T00:53:07.547862Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-29T00:53:07.547877Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-29T00:53:07.547880Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-29T00:53:07.547890Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-29T00:53:07.547912Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-29T00:53:07.548017Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }] })
2026-06-29T00:53:07.548092Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }] }), Number(1)))
2026-06-29T00:57:08.171365Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Mon, 29 Jun 2026 02:57:08 +0200
======================================================================
2026-06-29T00:57:08.171753Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-29T00:57:08.171799Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-29T00:57:08.171809Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-29T00:57:08.171833Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-29T00:57:08.172036Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-29T00:57:08.194397Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Mon, 29 Jun 2026 02:57:08 +0200
======================================================================
2026-06-29T00:57:08.194449Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-29T00:57:08.194490Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-29T00:57:08.194492Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-29T00:57:08.194495Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-29T00:57:08.194830Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-29T00:57:08.286121Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Mon, 29 Jun 2026 02:57:08 +0200
======================================================================
2026-06-29T00:57:08.286184Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-29T00:57:08.286237Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-29T00:57:08.286243Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-29T00:57:08.286248Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-29T00:57:08.286883Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-29T00:57:08.409865Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-29T00:57:08.409989Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-29T00:57:08.409999Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-29T00:57:08.410016Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-29T00:57:08.410019Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-29T00:57:08.410037Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-29T00:57:08.410060Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-29T00:57:08.410070Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-29T00:57:08.410109Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-29T00:57:08.410177Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-29T00:57:08.410192Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }] })
2026-06-29T00:57:08.410243Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-29T00:57:08.410281Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }] }), Number(1)))
2026-06-29T00:57:08.412557Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-29T00:57:08.412728Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-29T00:57:08.412756Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-29T00:57:08.412652Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-29T00:57:08.412776Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-29T00:57:08.412780Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-29T00:57:08.412802Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-29T00:57:08.412811Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-29T00:57:08.412815Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-29T00:57:08.412836Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-29T00:57:08.412882Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-29T00:57:08.413058Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }] })
2026-06-29T00:57:08.413168Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }] }), Number(1)))
2026-06-29T00:57:08.503006Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-29T00:57:08.503105Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-29T00:57:08.503157Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-29T00:57:08.503183Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-29T00:57:08.503200Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-29T00:57:08.503225Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-29T00:57:08.503229Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-29T00:57:08.503253Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-29T00:57:08.503262Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-29T00:57:08.503287Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-29T00:57:08.503305Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-29T00:57:08.503432Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-29T00:57:08.503565Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-29T00:58:27.404402Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Mon, 29 Jun 2026 02:58:27 +0200
======================================================================
2026-06-29T00:58:27.404458Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-29T00:58:27.404514Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-29T00:58:27.404520Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-29T00:58:27.404526Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-29T00:58:27.404791Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-29T00:58:27.459885Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-29T00:58:27.459947Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-29T00:58:27.459985Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-29T00:58:27.459985Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-29T00:58:27.459998Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-29T00:58:27.460010Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-29T00:58:27.460012Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-29T00:58:27.460022Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-29T00:58:27.460030Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-29T00:58:27.460038Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-29T00:58:27.460039Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-29T00:58:27.460115Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-29T00:58:27.460161Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-29T00:59:46.703728Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Mon, 29 Jun 2026 02:59:46 +0200
======================================================================
2026-06-29T00:59:46.703778Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-29T00:59:46.703817Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-29T00:59:46.703824Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-29T00:59:46.703829Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-29T00:59:46.704018Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-29T00:59:46.788267Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-29T00:59:46.788361Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-29T00:59:46.788433Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-29T00:59:46.788439Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-29T00:59:46.788448Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-29T00:59:46.788465Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-29T00:59:46.788467Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-29T00:59:46.788480Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-29T00:59:46.788488Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-29T00:59:46.788499Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-29T00:59:46.788502Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-29T00:59:46.788617Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-29T00:59:46.788695Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-29T01:09:21.862155Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Mon, 29 Jun 2026 03:09:21 +0200
======================================================================
2026-06-29T01:09:21.862210Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-29T01:09:21.862258Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-29T01:09:21.862264Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-29T01:09:21.862271Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-29T01:09:21.862474Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-29T01:09:21.963015Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-29T01:09:21.963049Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-29T01:09:21.963076Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-29T01:09:21.963090Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-29T01:09:21.963102Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-29T01:09:21.963100Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-29T01:09:21.963104Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-29T01:09:21.963119Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-29T01:09:21.963132Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-29T01:09:21.963140Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-29T01:09:21.963146Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-29T01:09:21.963220Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-29T01:09:21.963281Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-29T01:13:20.812885Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Mon, 29 Jun 2026 03:13:20 +0200
======================================================================
2026-06-29T01:13:20.812930Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-29T01:13:20.812962Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-29T01:13:20.812968Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-29T01:13:20.812974Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-29T01:13:20.813167Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-29T01:13:20.876686Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-29T01:13:20.876761Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-29T01:13:20.876796Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-29T01:13:20.876800Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-29T01:13:20.876823Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-29T01:13:20.876846Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-29T01:13:20.876850Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-29T01:13:20.876853Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-29T01:13:20.876867Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-29T01:13:20.876878Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-29T01:13:20.876902Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-29T01:13:20.877010Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }] })
2026-06-29T01:13:20.877089Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }] }), Number(1)))
2026-06-29T01:13:51.316414Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Mon, 29 Jun 2026 03:13:51 +0200
======================================================================
2026-06-29T01:13:51.316454Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-29T01:13:51.316480Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-29T01:13:51.316486Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-29T01:13:51.316490Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-29T01:13:51.316627Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-29T01:13:51.351276Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-29T01:13:51.351334Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-29T01:13:51.351374Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-29T01:13:51.351389Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-29T01:13:51.351395Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-29T01:13:51.351409Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-29T01:13:51.351413Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-29T01:13:51.351428Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-29T01:13:51.351431Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-29T01:13:51.351437Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-29T01:13:51.351448Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-29T01:13:51.351527Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-29T01:13:51.351587Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-29T01:22:29.306780Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Mon, 29 Jun 2026 03:22:29 +0200
======================================================================
2026-06-29T01:22:29.306809Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-29T01:22:29.306837Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-29T01:22:29.306839Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-29T01:22:29.306842Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-29T01:22:29.306997Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-29T01:22:29.372501Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-29T01:22:29.372555Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-29T01:22:29.372594Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-29T01:22:29.372599Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-29T01:22:29.372611Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-29T01:22:29.372638Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-29T01:22:29.372643Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-29T01:22:29.372675Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-29T01:22:29.372683Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-29T01:22:29.372695Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-29T01:22:29.372708Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-29T01:22:29.372821Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-29T01:22:29.372882Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-29T01:35:10.667779Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Mon, 29 Jun 2026 03:35:10 +0200
======================================================================
2026-06-29T01:35:10.667821Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-29T01:35:10.667854Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-29T01:35:10.667860Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-29T01:35:10.667865Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-29T01:35:10.668006Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-29T01:35:10.748313Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-29T01:35:10.748377Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-29T01:35:10.748418Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-29T01:35:10.748441Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-29T01:35:10.748460Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-29T01:35:10.748476Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-29T01:35:10.748478Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-29T01:35:10.748482Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-29T01:35:10.748491Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-29T01:35:10.748497Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-29T01:35:10.748514Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-29T01:35:10.748644Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }] })
2026-06-29T01:35:10.748729Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }] }), Number(1)))
2026-06-29T01:52:10.695390Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Mon, 29 Jun 2026 03:52:10 +0200
======================================================================
2026-06-29T01:52:10.695421Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-29T01:52:10.695455Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-29T01:52:10.695458Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-29T01:52:10.695461Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-29T01:52:10.695646Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-29T01:52:10.757295Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-29T01:52:10.757337Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-29T01:52:10.757368Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-29T01:52:10.757388Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-29T01:52:10.757402Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-29T01:52:10.757415Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-29T01:52:10.757426Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-29T01:52:10.757429Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-29T01:52:10.757448Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-29T01:52:10.757457Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-29T01:52:10.757470Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-29T01:52:10.757534Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }] })
2026-06-29T01:52:10.757620Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }] }), Number(1)))
2026-06-29T04:11:05.081463Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Mon, 29 Jun 2026 06:11:05 +0200
======================================================================
2026-06-29T04:11:05.081516Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-29T04:11:05.081553Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-29T04:11:05.081555Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-29T04:11:05.081559Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-29T04:11:05.081708Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-29T04:11:05.204120Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Mon, 29 Jun 2026 06:11:05 +0200
======================================================================
2026-06-29T04:11:05.204150Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-29T04:11:05.204176Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-29T04:11:05.204178Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-29T04:11:05.204182Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-29T04:11:05.204341Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-29T04:11:05.243769Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-29T04:11:05.243888Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-29T04:11:05.243985Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-29T04:11:05.243998Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-29T04:11:05.244018Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-29T04:11:05.244023Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-29T04:11:05.244046Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-29T04:11:05.244059Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-29T04:11:05.244075Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-29T04:11:05.244719Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-29T04:11:05.244810Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-29T04:11:05.244999Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }] })
2026-06-29T04:11:05.247704Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }] }), Number(1)))
2026-06-29T04:11:05.368958Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Mon, 29 Jun 2026 06:11:05 +0200
======================================================================
2026-06-29T04:11:05.369008Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-29T04:11:05.369043Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-29T04:11:05.369047Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-29T04:11:05.369051Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-29T04:11:05.369226Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-29T04:11:05.381928Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-29T04:11:05.381996Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-29T04:11:05.382040Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-29T04:11:05.382057Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-29T04:11:05.382069Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-29T04:11:05.382089Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-29T04:11:05.382103Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-29T04:11:05.382115Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-29T04:11:05.382129Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-29T04:11:05.382143Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-29T04:11:05.382156Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-29T04:11:05.382302Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }] })
2026-06-29T04:11:05.382418Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }] }), Number(1)))
2026-06-29T04:11:05.503005Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-29T04:11:05.503080Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-29T04:11:05.503125Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-29T04:11:05.503181Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-29T04:11:05.503199Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-29T04:11:05.503204Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-29T04:11:05.503215Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-29T04:11:05.503216Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-29T04:11:05.503229Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-29T04:11:05.503282Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-29T04:11:05.503291Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-29T04:11:05.503410Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }] })
2026-06-29T04:11:05.503609Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }] }), Number(1)))
2026-06-29T04:38:53.354034Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Mon, 29 Jun 2026 06:38:53 +0200
======================================================================
2026-06-29T04:38:53.354086Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-29T04:38:53.354137Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-29T04:38:53.354140Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-29T04:38:53.354144Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-29T04:38:53.354364Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-29T04:38:53.422274Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-29T04:38:53.422311Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-29T04:38:53.422340Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-29T04:38:53.422358Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-29T04:38:53.422370Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-29T04:38:53.422387Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-29T04:38:53.422389Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-29T04:38:53.422392Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-29T04:38:53.422408Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-29T04:38:53.422417Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-29T04:38:53.422428Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-29T04:38:53.422489Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }] })
2026-06-29T04:38:53.422562Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }] }), Number(1)))
2026-06-29T09:04:45.551334Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Mon, 29 Jun 2026 11:04:45 +0200
======================================================================
2026-06-29T09:04:45.551377Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-29T09:04:45.551419Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-29T09:04:45.551425Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-29T09:04:45.551432Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-29T09:04:45.551636Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-29T09:04:45.585941Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.193" } }
2026-06-29T09:04:45.586101Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-29T09:04:45.586171Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-29T09:04:45.586190Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-29T09:04:45.586230Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-29T09:04:45.586261Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-29T09:04:45.586275Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-29T09:04:45.586285Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-29T09:04:45.586323Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-29T09:04:45.586365Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-29T09:04:45.586389Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-29T09:04:45.586536Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }] })
2026-06-29T09:04:45.586815Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }] }), Number(1)))
2026-06-30T09:58:41.568155Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 11:58:41 +0200
======================================================================
2026-06-30T09:58:41.568240Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T09:58:41.568294Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T09:58:41.568301Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T09:58:41.568306Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T09:58:41.568501Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T09:58:41.599309Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T09:58:41.599356Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T09:58:41.599394Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T09:58:41.599415Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T09:58:41.599426Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T09:58:41.599439Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T09:58:41.599440Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T09:58:41.599443Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T09:58:41.599452Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T09:58:41.599459Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T09:58:41.599474Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T09:58:41.599565Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-30T09:58:41.599696Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-30T10:27:53.475908Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 12:27:53 +0200
======================================================================
2026-06-30T10:27:53.475958Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T10:27:53.475995Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T10:27:53.476001Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T10:27:53.476006Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T10:27:53.476189Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T10:27:53.505929Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T10:27:53.505971Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T10:27:53.506009Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T10:27:53.506021Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T10:27:53.506028Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T10:27:53.506040Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T10:27:53.506044Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T10:27:53.506061Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T10:27:53.506060Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T10:27:53.506069Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T10:27:53.506080Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T10:27:53.506151Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }] })
2026-06-30T10:27:53.506210Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }] }), Number(1)))
2026-06-30T11:11:53.498533Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 13:11:53 +0200
======================================================================
2026-06-30T11:11:53.498599Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T11:11:53.498683Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T11:11:53.498688Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T11:11:53.498692Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T11:11:53.498896Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T11:11:53.625708Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T11:11:53.625808Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T11:11:53.625849Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T11:11:53.625867Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T11:11:53.625887Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T11:11:53.625915Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T11:11:53.625919Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T11:11:53.625919Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T11:11:53.625947Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T11:11:53.625958Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T11:11:53.625969Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T11:11:53.626086Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }] })
2026-06-30T11:11:53.626161Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }] }), Number(1)))
2026-06-30T11:11:53.627056Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 13:11:53 +0200
======================================================================
2026-06-30T11:11:53.627088Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T11:11:53.627123Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T11:11:53.627128Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T11:11:53.627133Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T11:11:53.627281Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T11:11:53.698757Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T11:11:53.698822Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T11:11:53.698873Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T11:11:53.698879Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T11:11:53.698889Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T11:11:53.698891Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T11:11:53.698925Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T11:11:53.698972Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T11:11:53.699116Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-30T11:11:53.699187Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T11:11:53.699193Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T11:11:53.699199Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-30T11:11:53.699750Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T11:16:32.624424Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 13:16:32 +0200
======================================================================
2026-06-30T11:16:32.624459Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T11:16:32.624487Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T11:16:32.624493Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T11:16:32.624498Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T11:16:32.624719Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T11:16:32.643475Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T11:16:32.643538Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T11:16:32.643580Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T11:16:32.643591Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T11:16:32.643607Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T11:16:32.643631Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T11:16:32.643635Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T11:16:32.643638Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T11:16:32.643653Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T11:16:32.643677Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T11:16:32.643690Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T11:16:32.643810Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }] })
2026-06-30T11:16:32.643888Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }] }), Number(1)))
2026-06-30T11:16:47.652312Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 13:16:47 +0200
======================================================================
2026-06-30T11:16:47.652351Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T11:16:47.652384Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T11:16:47.652389Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T11:16:47.652393Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T11:16:47.652531Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T11:16:47.736835Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T11:16:47.736887Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T11:16:47.736917Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T11:16:47.736924Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T11:16:47.736929Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T11:16:47.736967Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T11:16:47.736972Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T11:16:47.736989Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T11:16:47.736991Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T11:16:47.737003Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T11:16:47.737018Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T11:16:47.737137Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-30T11:16:47.737200Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-30T11:48:57.451021Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 13:48:57 +0200
======================================================================
2026-06-30T11:48:57.451069Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T11:48:57.451099Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T11:48:57.451102Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T11:48:57.451106Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T11:48:57.451248Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T11:48:57.488115Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 13:48:57 +0200
======================================================================
2026-06-30T11:48:57.488173Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T11:48:57.488216Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T11:48:57.488224Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T11:48:57.488229Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T11:48:57.488449Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T11:48:57.504010Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T11:48:57.504055Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T11:48:57.504077Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T11:48:57.504090Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T11:48:57.504100Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T11:48:57.504112Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T11:48:57.504114Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T11:48:57.504123Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T11:48:57.504132Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T11:48:57.504141Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T11:48:57.504149Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T11:48:57.504260Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-30T11:48:57.504331Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-30T11:48:57.569462Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T11:48:57.569542Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T11:48:57.569600Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T11:48:57.569613Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T11:48:57.569615Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T11:48:57.569647Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T11:48:57.569649Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T11:48:57.569685Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T11:48:57.569701Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T11:48:57.569711Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T11:48:57.569723Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T11:48:57.569863Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-30T11:48:57.569953Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-30T12:08:53.000951Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 14:08:53 +0200
======================================================================
2026-06-30T12:08:53.000996Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T12:08:53.001034Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T12:08:53.001038Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T12:08:53.001041Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T12:08:53.001664Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T12:08:53.089098Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T12:08:53.089145Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T12:08:53.089173Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T12:08:53.089184Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T12:08:53.089195Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T12:08:53.089207Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T12:08:53.089208Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T12:08:53.089219Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T12:08:53.089225Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T12:08:53.089233Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T12:08:53.089239Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T12:08:53.089358Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }] })
2026-06-30T12:08:53.089425Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }] }), Number(1)))
2026-06-30T12:12:17.344926Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 14:12:17 +0200
======================================================================
2026-06-30T12:12:17.344966Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T12:12:17.344992Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T12:12:17.344995Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T12:12:17.344998Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T12:12:17.345144Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T12:12:17.447367Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T12:12:17.447416Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T12:12:17.447450Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T12:12:17.447447Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T12:12:17.447463Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T12:12:17.447480Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T12:12:17.447483Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T12:12:17.447494Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T12:12:17.447511Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T12:12:17.447520Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T12:12:17.447518Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T12:12:17.447603Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }] })
2026-06-30T12:12:17.447649Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }] }), Number(1)))
2026-06-30T13:18:27.385586Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 15:18:27 +0200
======================================================================
2026-06-30T13:18:27.385639Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T13:18:27.385670Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T13:18:27.385674Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T13:18:27.385677Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T13:18:27.385869Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T13:18:27.489761Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T13:18:27.489848Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T13:18:27.489898Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T13:18:27.489906Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T13:18:27.489914Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T13:18:27.489940Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T13:18:27.489944Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T13:18:27.489968Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T13:18:27.489982Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T13:18:27.489988Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T13:18:27.489997Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T13:18:27.490247Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-30T13:18:27.490334Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-30T13:18:27.535976Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 15:18:27 +0200
======================================================================
2026-06-30T13:18:27.536034Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T13:18:27.536096Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T13:18:27.536101Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T13:18:27.536106Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T13:18:27.536334Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T13:18:27.588516Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T13:18:27.588623Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T13:18:27.588694Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T13:18:27.588734Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T13:18:27.588751Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T13:18:27.588773Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T13:18:27.588777Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T13:18:27.588779Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T13:18:27.588798Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T13:18:27.588812Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T13:18:27.588824Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T13:18:27.589018Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }] })
2026-06-30T13:18:27.589120Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }] }), Number(1)))
2026-06-30T13:22:44.935550Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 15:22:44 +0200
======================================================================
2026-06-30T13:22:44.935581Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T13:22:44.935607Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T13:22:44.935609Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T13:22:44.935612Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T13:22:44.935712Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T13:22:44.995833Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T13:22:44.995883Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T13:22:44.995911Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T13:22:44.995921Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T13:22:44.995924Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T13:22:44.995950Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T13:22:44.995952Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T13:22:44.995963Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T13:22:44.995976Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T13:22:44.995983Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T13:22:44.995982Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T13:22:44.996110Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-30T13:22:44.996180Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-30T13:40:56.928934Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 15:40:56 +0200
======================================================================
2026-06-30T13:40:56.928978Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T13:40:56.929007Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T13:40:56.929009Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T13:40:56.929012Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T13:40:56.929130Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T13:40:57.025963Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T13:40:57.026009Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T13:40:57.026037Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T13:40:57.026039Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T13:40:57.026052Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T13:40:57.026077Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T13:40:57.026080Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T13:40:57.026090Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T13:40:57.026097Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T13:40:57.026106Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T13:40:57.026112Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T13:40:57.026187Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }] })
2026-06-30T13:40:57.026266Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }] }), Number(1)))
2026-06-30T14:55:29.328306Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 16:55:29 +0200
======================================================================
2026-06-30T14:55:29.328347Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T14:55:29.328382Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T14:55:29.328385Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T14:55:29.328389Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T14:55:29.328556Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T14:55:29.408351Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T14:55:29.408404Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T14:55:29.408453Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T14:55:29.408471Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T14:55:29.408482Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T14:55:29.408492Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T14:55:29.408500Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T14:55:29.408504Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T14:55:29.408521Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T14:55:29.408528Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T14:55:29.408539Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T14:55:29.408601Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-30T14:55:29.408712Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-30T15:23:06.511508Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 17:23:06 +0200
======================================================================
2026-06-30T15:23:06.511597Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T15:23:06.511637Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T15:23:06.511642Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T15:23:06.511649Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T15:23:06.511865Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T15:23:06.594065Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 17:23:06 +0200
======================================================================
2026-06-30T15:23:06.594098Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T15:23:06.594130Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T15:23:06.594133Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T15:23:06.594136Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T15:23:06.594288Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T15:23:06.621517Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T15:23:06.621604Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T15:23:06.621677Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T15:23:06.621687Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T15:23:06.621711Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T15:23:06.621725Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T15:23:06.621728Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T15:23:06.621740Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T15:23:06.621748Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T15:23:06.621756Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T15:23:06.621777Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T15:23:06.621861Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-30T15:23:06.621915Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-30T15:23:06.656849Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T15:23:06.656898Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T15:23:06.656931Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T15:23:06.656939Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T15:23:06.656942Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T15:23:06.656971Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T15:23:06.656973Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T15:23:06.656987Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T15:23:06.656995Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T15:23:06.657012Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T15:23:06.657009Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T15:23:06.657102Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }] })
2026-06-30T15:23:06.657158Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }] }), Number(1)))
2026-06-30T15:27:12.616760Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 17:27:12 +0200
======================================================================
2026-06-30T15:27:12.616846Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T15:27:12.616899Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T15:27:12.616906Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T15:27:12.616932Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T15:27:12.617359Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T15:27:12.718764Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T15:27:12.718841Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T15:27:12.718882Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T15:27:12.718882Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T15:27:12.718894Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T15:27:12.718910Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T15:27:12.718912Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T15:27:12.718931Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T15:27:12.718941Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T15:27:12.718954Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T15:27:12.718959Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T15:27:12.719096Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-30T15:27:12.719177Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-30T15:27:13.809133Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 17:27:13 +0200
======================================================================
2026-06-30T15:27:13.809174Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T15:27:13.809207Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T15:27:13.809211Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T15:27:13.809214Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T15:27:13.809830Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T15:27:13.896776Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T15:27:13.896812Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T15:27:13.896850Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T15:27:13.896848Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T15:27:13.896860Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T15:27:13.896885Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T15:27:13.896887Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T15:27:13.896902Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T15:27:13.896910Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T15:27:13.896915Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T15:27:13.896920Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T15:27:13.897031Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }] })
2026-06-30T15:27:13.897092Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }] }), Number(1)))
2026-06-30T16:04:20.541207Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 18:04:20 +0200
======================================================================
2026-06-30T16:04:20.541267Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T16:04:20.541321Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T16:04:20.541325Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T16:04:20.541330Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T16:04:20.570040Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T16:04:20.587361Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 18:04:20 +0200
======================================================================
2026-06-30T16:04:20.587439Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T16:04:20.587508Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T16:04:20.587517Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T16:04:20.587524Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T16:04:20.587821Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T16:04:20.707625Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T16:04:20.707714Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T16:04:20.707764Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T16:04:20.707773Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T16:04:20.707799Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T16:04:20.707843Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T16:04:20.707846Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T16:04:20.707860Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T16:04:20.707869Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T16:04:20.707880Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T16:04:20.707892Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T16:04:20.708050Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }] })
2026-06-30T16:04:20.708106Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }] }), Number(1)))
2026-06-30T16:04:20.757286Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T16:04:20.757372Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T16:04:20.757419Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T16:04:20.757422Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T16:04:20.757434Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T16:04:20.757464Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T16:04:20.757468Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T16:04:20.757489Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T16:04:20.757501Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T16:04:20.757502Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T16:04:20.757514Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T16:04:20.757648Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }] })
2026-06-30T16:04:20.757741Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }] }), Number(1)))
2026-06-30T16:20:17.883897Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 18:20:17 +0200
======================================================================
2026-06-30T16:20:17.883936Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T16:20:17.883969Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T16:20:17.883972Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T16:20:17.883976Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T16:20:17.884123Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T16:20:18.051393Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 18:20:18 +0200
======================================================================
2026-06-30T16:20:18.051456Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T16:20:18.051508Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T16:20:18.051528Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T16:20:18.051533Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T16:20:18.051968Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T16:20:18.111103Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T16:20:18.111185Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T16:20:18.111251Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T16:20:18.111327Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T16:20:18.111584Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T16:20:18.111597Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T16:20:18.111616Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T16:20:18.111620Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T16:20:18.111641Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T16:20:18.111654Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T16:20:18.111719Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T16:20:18.111999Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-30T16:20:18.112095Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-30T16:20:18.235682Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T16:20:18.235733Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T16:20:18.235767Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T16:20:18.235768Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T16:20:18.235774Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T16:20:18.235800Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T16:20:18.235802Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T16:20:18.235814Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T16:20:18.235838Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T16:20:18.235843Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T16:20:18.235852Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T16:20:18.235929Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }] })
2026-06-30T16:20:18.235985Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }] }), Number(1)))
2026-06-30T16:34:00.424523Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 18:34:00 +0200
======================================================================
2026-06-30T16:34:00.424577Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T16:34:00.424618Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T16:34:00.424625Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T16:34:00.424631Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T16:34:00.424820Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T16:34:00.481128Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T16:34:00.481181Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T16:34:00.481211Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T16:34:00.481214Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T16:34:00.481239Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T16:34:00.481263Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T16:34:00.481268Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T16:34:00.481280Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T16:34:00.481290Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T16:34:00.481301Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T16:34:00.481339Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T16:34:00.481423Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-30T16:34:00.481515Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-30T17:56:39.898812Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 19:56:39 +0200
======================================================================
2026-06-30T17:56:39.898848Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T17:56:39.898876Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T17:56:39.898879Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T17:56:39.898881Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T17:56:39.898999Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T17:56:39.985596Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T17:56:39.985643Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T17:56:39.985679Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T17:56:39.985693Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T17:56:39.985696Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T17:56:39.985713Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T17:56:39.985715Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T17:56:39.985725Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T17:56:39.985731Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T17:56:39.985738Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T17:56:39.985754Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T17:56:39.985884Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }] })
2026-06-30T17:56:39.985961Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }] }), Number(1)))
2026-06-30T18:12:48.720223Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 20:12:48 +0200
======================================================================
2026-06-30T18:12:48.720287Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T18:12:48.720340Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T18:12:48.720346Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T18:12:48.720351Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T18:12:48.721790Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T18:12:48.762311Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.197" } }
2026-06-30T18:12:48.762347Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T18:12:48.762370Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T18:12:48.762373Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T18:12:48.762392Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T18:12:48.762405Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T18:12:48.762416Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T18:12:48.762420Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T18:12:48.762429Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T18:12:48.762436Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T18:12:48.762444Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T18:12:48.762556Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-30T18:12:48.762603Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-30T20:13:06.691370Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 22:13:06 +0200
======================================================================
2026-06-30T20:13:06.691418Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T20:13:06.691451Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T20:13:06.691454Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T20:13:06.691458Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T20:13:06.691620Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T20:13:06.767092Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.197" } }
2026-06-30T20:13:06.767160Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T20:13:06.767189Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T20:13:06.767212Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T20:13:06.767238Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T20:13:06.767248Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T20:13:06.767263Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T20:13:06.767269Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T20:13:06.767289Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T20:13:06.767302Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T20:13:06.767324Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T20:13:06.767384Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-30T20:13:06.767491Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
======================================================================
NEW SERVER RUN: Sat, 27 Jun 2026 20:39:28 +0200
======================================================================
2026-06-27T18:39:28.172668Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-27T18:39:28.172698Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-27T18:39:28.172701Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-27T18:39:28.172704Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-27T18:39:28.172863Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-27T18:39:28.172975Z ERROR ardour_mcp_server: MCP Server serving error: Custom { kind: UnexpectedEof, error: "expect initialize notification" }
2026-06-27T18:39:39.680650Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sat, 27 Jun 2026 20:39:39 +0200
======================================================================
2026-06-27T18:39:39.680690Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-27T18:39:39.680726Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-27T18:39:39.680733Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-27T18:39:39.680738Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-27T18:39:39.680940Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-27T18:39:39.681118Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2024-11-05"), capabilities: ClientCapabilities { experimental: None, roots: None, sampling: None }, client_info: Implementation { name: "smoke", version: "0" } }
2026-06-27T18:39:39.681152Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-27T18:39:39.681197Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(2)))
2026-06-27T18:39:39.681214Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-27T18:39:39.681221Z INFO rmcp::service: received request id=2 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-27T18:39:39.681266Z INFO ardour_mcp_server: Tokio UDP socket for OSC bound to 127.0.0.1:9099
2026-06-27T18:39:39.681492Z INFO rmcp::service: response message id=2 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }] })
2026-06-27T18:39:39.681621Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }] }), Number(2)))
2026-06-27T18:39:41.677357Z INFO rmcp::service: input stream terminated
2026-06-27T18:39:41.677397Z INFO rmcp::service: serve finished quit_reason=Closed
2026-06-27T18:39:41.677450Z INFO ardour_mcp_server: Ardour MCP server stopped.
2026-06-28T00:58:01.469430Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 02:58:01 +0200
======================================================================
2026-06-28T00:58:01.469465Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T00:58:01.469492Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T00:58:01.469498Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T00:58:01.469501Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T00:58:01.469617Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T00:58:01.491839Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 02:58:01 +0200
======================================================================
2026-06-28T00:58:01.491877Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T00:58:01.491907Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T00:58:01.491913Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T00:58:01.491918Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T00:58:01.492061Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T00:58:01.571711Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T00:58:01.571786Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T00:58:01.571833Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T00:58:01.571835Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T00:58:01.571847Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T00:58:01.571864Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T00:58:01.571865Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T00:58:01.571881Z INFO ardour_mcp_server: Tokio UDP socket for OSC bound to 127.0.0.1:9099
2026-06-28T00:58:01.571885Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T00:58:01.571892Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T00:58:01.571901Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T00:58:01.572042Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }] })
2026-06-28T00:58:01.572118Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }] }), Number(1)))
2026-06-28T00:58:01.589367Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T00:58:01.589414Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T00:58:01.589455Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T00:58:01.589463Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T00:58:01.589475Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T00:58:01.589494Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T00:58:01.589498Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T00:58:01.589515Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T00:58:01.589519Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T00:58:01.589524Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T00:58:01.589547Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T00:58:01.589678Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-28T00:58:01.589759Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-28T01:13:35.444743Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 03:13:35 +0200
======================================================================
2026-06-28T01:13:35.444781Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T01:13:35.444811Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T01:13:35.444818Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T01:13:35.444823Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T01:13:35.444981Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T01:13:35.528971Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T01:13:35.529031Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T01:13:35.529092Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T01:13:35.529099Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T01:13:35.529112Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T01:13:35.529134Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T01:13:35.529138Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T01:13:35.529155Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T01:13:35.529155Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T01:13:35.529165Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T01:13:35.529177Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T01:13:35.529306Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }] })
2026-06-28T01:13:35.529390Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }] }), Number(1)))
2026-06-28T05:00:55.902274Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 07:00:55 +0200
======================================================================
2026-06-28T05:00:55.902312Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T05:00:55.902347Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T05:00:55.902350Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T05:00:55.902355Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T05:00:55.902516Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T05:00:55.960968Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T05:00:55.961003Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T05:00:55.961065Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T05:00:55.961081Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T05:00:55.961097Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T05:00:55.961114Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T05:00:55.961124Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T05:00:55.961128Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T05:00:55.961143Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T05:00:55.961152Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T05:00:55.961162Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T05:00:55.961255Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }] })
2026-06-28T05:00:55.961346Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }] }), Number(1)))
2026-06-28T05:07:12.520034Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 07:07:12 +0200
======================================================================
2026-06-28T05:07:12.520078Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T05:07:12.520108Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T05:07:12.520114Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T05:07:12.520118Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T05:07:12.520290Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T05:07:12.582391Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T05:07:12.582424Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T05:07:12.582456Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T05:07:12.582465Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T05:07:12.582484Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T05:07:12.582505Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T05:07:12.582510Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T05:07:12.582511Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T05:07:12.582527Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T05:07:12.582544Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T05:07:12.582556Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T05:07:12.582615Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-28T05:07:12.582717Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-28T11:59:32.608680Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 13:59:32 +0200
======================================================================
2026-06-28T11:59:32.608708Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T11:59:32.608729Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T11:59:32.608737Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T11:59:32.608739Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T11:59:32.608884Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T11:59:32.665313Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T11:59:32.665353Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T11:59:32.665386Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T11:59:32.665397Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T11:59:32.665405Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T11:59:32.665414Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T11:59:32.665417Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T11:59:32.665437Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T11:59:32.665450Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T11:59:32.665448Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T11:59:32.665462Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T11:59:32.665583Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-28T11:59:32.665668Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-28T12:55:07.087209Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 14:55:07 +0200
======================================================================
2026-06-28T12:55:07.087249Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T12:55:07.087283Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T12:55:07.087289Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T12:55:07.087295Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T12:55:07.087454Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T12:55:07.164128Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T12:55:07.164184Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T12:55:07.164225Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T12:55:07.164231Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T12:55:07.164255Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T12:55:07.164274Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T12:55:07.164277Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T12:55:07.164288Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T12:55:07.164293Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T12:55:07.164302Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T12:55:07.164312Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T12:55:07.164437Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-28T12:55:07.164510Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-28T13:44:55.686725Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 15:44:55 +0200
======================================================================
2026-06-28T13:44:55.686904Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T13:44:55.686967Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T13:44:55.686977Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T13:44:55.686983Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T13:44:55.687168Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T13:44:55.746636Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T13:44:55.746713Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T13:44:55.746749Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T13:44:55.746772Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T13:44:55.746782Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T13:44:55.746793Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T13:44:55.746791Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T13:44:55.746795Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T13:44:55.746804Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T13:44:55.746816Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T13:44:55.746822Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T13:44:55.746945Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-28T13:44:55.747015Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-28T14:49:59.132937Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 16:49:59 +0200
======================================================================
2026-06-28T14:49:59.132971Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T14:49:59.132990Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T14:49:59.132992Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T14:49:59.132995Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T14:49:59.133082Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T14:49:59.173642Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T14:49:59.173687Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T14:49:59.173710Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T14:49:59.173716Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T14:49:59.173724Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T14:49:59.173735Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T14:49:59.173736Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T14:49:59.173745Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T14:49:59.173751Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T14:49:59.173754Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T14:49:59.173758Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T14:49:59.173840Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-28T14:49:59.173885Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-28T15:08:27.896841Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 17:08:27 +0200
======================================================================
2026-06-28T15:08:27.896878Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T15:08:27.896913Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T15:08:27.896916Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T15:08:27.896923Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T15:08:27.897224Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T15:08:27.931999Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T15:08:27.932058Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T15:08:27.932087Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T15:08:27.932088Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T15:08:27.932097Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T15:08:27.932117Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T15:08:27.932119Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T15:08:27.932129Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T15:08:27.932130Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T15:08:27.932134Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T15:08:27.932142Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T15:08:27.932276Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-28T15:08:27.932354Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-28T15:53:29.441762Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 17:53:29 +0200
======================================================================
2026-06-28T15:53:29.441834Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T15:53:29.441878Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T15:53:29.441885Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T15:53:29.441890Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T15:53:29.442095Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T15:53:29.517520Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T15:53:29.517587Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T15:53:29.517638Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T15:53:29.517645Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T15:53:29.517698Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T15:53:29.517724Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T15:53:29.517728Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T15:53:29.517731Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T15:53:29.517761Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T15:53:29.517773Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T15:53:29.517786Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T15:53:29.517919Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-28T15:53:29.518002Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-28T16:23:05.280508Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 18:23:05 +0200
======================================================================
2026-06-28T16:23:05.280555Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T16:23:05.280603Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T16:23:05.280607Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T16:23:05.280613Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T16:23:05.281092Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T16:23:05.319365Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 18:23:05 +0200
======================================================================
2026-06-28T16:23:05.319398Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T16:23:05.319435Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T16:23:05.319440Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T16:23:05.319443Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T16:23:05.319580Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T16:23:05.373238Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T16:23:05.373306Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T16:23:05.373347Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T16:23:05.373367Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T16:23:05.373390Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T16:23:05.373417Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T16:23:05.373416Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T16:23:05.373422Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T16:23:05.373446Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T16:23:05.373470Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T16:23:05.373485Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T16:23:05.373557Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }] })
2026-06-28T16:23:05.373624Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }] }), Number(1)))
2026-06-28T16:23:05.390600Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T16:23:05.390676Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T16:23:05.391893Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T16:23:05.391895Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T16:23:05.391929Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T16:23:05.391961Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T16:23:05.391965Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T16:23:05.392002Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T16:23:05.392000Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T16:23:05.392016Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T16:23:05.392030Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T16:23:05.392147Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }] })
2026-06-28T16:23:05.392240Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }] }), Number(1)))
2026-06-28T18:59:25.179246Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 20:59:25 +0200
======================================================================
2026-06-28T18:59:25.179326Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T18:59:25.179387Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T18:59:25.179394Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T18:59:25.179399Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T18:59:25.179875Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T18:59:25.183240Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 20:59:25 +0200
======================================================================
2026-06-28T18:59:25.183307Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T18:59:25.183359Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T18:59:25.183364Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T18:59:25.183368Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T18:59:25.183566Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T18:59:25.385072Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T18:59:25.385202Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T18:59:25.385281Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T18:59:25.385300Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T18:59:25.385320Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T18:59:25.385322Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T18:59:25.385370Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T18:59:25.385386Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T18:59:25.385404Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T18:59:25.385704Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T18:59:25.385790Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T18:59:25.386055Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-28T18:59:25.386158Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-28T18:59:25.494585Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 20:59:25 +0200
======================================================================
2026-06-28T18:59:25.494677Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T18:59:25.494762Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T18:59:25.494768Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T18:59:25.494775Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T18:59:25.495948Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T18:59:25.522951Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 20:59:25 +0200
======================================================================
2026-06-28T18:59:25.523033Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T18:59:25.523083Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T18:59:25.523089Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T18:59:25.523095Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T18:59:25.541296Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T18:59:25.577791Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T18:59:25.577877Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T18:59:25.577945Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T18:59:25.577960Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T18:59:25.577981Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T18:59:25.577984Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T18:59:25.578016Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T18:59:25.578077Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T18:59:25.578261Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }] })
2026-06-28T18:59:25.578341Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T18:59:25.578350Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T18:59:25.578360Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }] }), Number(1)))
2026-06-28T18:59:25.578637Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T18:59:25.607444Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 20:59:25 +0200
======================================================================
2026-06-28T18:59:25.607495Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T18:59:25.607557Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T18:59:25.607563Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T18:59:25.607567Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T18:59:25.609675Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T18:59:25.703443Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 20:59:25 +0200
======================================================================
2026-06-28T18:59:25.703512Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T18:59:25.703563Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T18:59:25.703569Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T18:59:25.703574Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T18:59:25.703775Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T18:59:25.879413Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T18:59:25.879539Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T18:59:25.881133Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T18:59:25.881250Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T18:59:25.881591Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T18:59:25.881610Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T18:59:25.881636Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T18:59:25.881640Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T18:59:25.881864Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-28T18:59:25.881962Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T18:59:25.881972Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T18:59:25.881982Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-28T18:59:25.882826Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T18:59:25.958885Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T18:59:25.958975Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T18:59:25.959042Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T18:59:25.959059Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T18:59:25.959080Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T18:59:25.959084Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T18:59:25.959150Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T18:59:25.959218Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T18:59:25.959447Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }] })
2026-06-28T18:59:25.959549Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T18:59:25.959562Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T18:59:25.959572Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }] }), Number(1)))
2026-06-28T18:59:25.961724Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T18:59:26.035844Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T18:59:26.035942Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T18:59:26.036762Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T18:59:26.036796Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T18:59:26.036821Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T18:59:26.036840Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T18:59:26.036860Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T18:59:26.036872Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T18:59:26.036886Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T18:59:26.037873Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T18:59:26.037987Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T18:59:26.038160Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }] })
2026-06-28T18:59:26.038742Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T18:59:26.038819Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T18:59:26.038871Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T18:59:26.038884Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T18:59:26.038909Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T18:59:26.038913Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T18:59:26.038933Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T18:59:26.038943Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T18:59:26.038955Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T18:59:26.038911Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }] }), Number(1)))
2026-06-28T18:59:26.039135Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T18:59:26.039132Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-28T18:59:26.039196Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T18:59:26.039736Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-28T20:10:15.978644Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 22:10:15 +0200
======================================================================
2026-06-28T20:10:15.978762Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T20:10:15.978842Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T20:10:15.978852Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T20:10:15.978859Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T20:10:15.979782Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T20:10:15.993510Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 22:10:15 +0200
======================================================================
2026-06-28T20:10:15.993570Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T20:10:15.993631Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T20:10:15.993688Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T20:10:15.993696Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T20:10:15.993909Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T20:10:16.025747Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 22:10:16 +0200
======================================================================
2026-06-28T20:10:16.025800Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T20:10:16.025845Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T20:10:16.025849Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T20:10:16.025855Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T20:10:16.028368Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T20:10:16.038104Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 22:10:16 +0200
======================================================================
2026-06-28T20:10:16.038156Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T20:10:16.038208Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T20:10:16.038213Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T20:10:16.038217Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T20:10:16.038881Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T20:10:16.225450Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T20:10:16.225611Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T20:10:16.225628Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T20:10:16.225650Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T20:10:16.225653Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T20:10:16.225726Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T20:10:16.225764Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T20:10:16.225780Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T20:10:16.225822Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T20:10:16.225877Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T20:10:16.225961Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T20:10:16.226171Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }] })
2026-06-28T20:10:16.226706Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }] }), Number(1)))
2026-06-28T20:10:16.255746Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T20:10:16.255871Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T20:10:16.255949Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T20:10:16.255975Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T20:10:16.256001Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T20:10:16.256004Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T20:10:16.256024Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T20:10:16.256040Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T20:10:16.256064Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T20:10:16.256294Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }] })
2026-06-28T20:10:16.256358Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T20:10:16.256425Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T20:10:16.256463Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }] }), Number(1)))
2026-06-28T20:10:16.307568Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T20:10:16.307689Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T20:10:16.307763Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T20:10:16.307771Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T20:10:16.307785Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T20:10:16.307800Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T20:10:16.307802Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T20:10:16.307824Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T20:10:16.307852Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T20:10:16.307857Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T20:10:16.307864Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T20:10:16.307994Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-28T20:10:16.308063Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-28T20:10:16.327776Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T20:10:16.327874Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T20:10:16.327911Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T20:10:16.327930Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T20:10:16.327946Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T20:10:16.327970Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T20:10:16.327973Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T20:10:16.327975Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T20:10:16.327998Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T20:10:16.328008Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T20:10:16.328020Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T20:10:16.328175Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }] })
2026-06-28T20:10:16.328265Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }] }), Number(1)))
2026-06-28T20:21:36.409109Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Sun, 28 Jun 2026 22:21:36 +0200
======================================================================
2026-06-28T20:21:36.409160Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-28T20:21:36.409199Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-28T20:21:36.409205Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-28T20:21:36.409210Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-28T20:21:36.409422Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-28T20:21:36.473277Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-28T20:21:36.473325Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-28T20:21:36.473379Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-28T20:21:36.473389Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-28T20:21:36.473406Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-28T20:21:36.473420Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-28T20:21:36.473430Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-28T20:21:36.473441Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-28T20:21:36.473444Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-28T20:21:36.473448Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-28T20:21:36.473457Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-28T20:21:36.473584Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }] })
2026-06-28T20:21:36.473694Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }] }), Number(1)))
2026-06-29T00:53:07.485171Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Mon, 29 Jun 2026 02:53:07 +0200
======================================================================
2026-06-29T00:53:07.485214Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-29T00:53:07.485249Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-29T00:53:07.485255Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-29T00:53:07.485261Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-29T00:53:07.485602Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-29T00:53:07.547708Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-29T00:53:07.547762Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-29T00:53:07.547807Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-29T00:53:07.547828Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-29T00:53:07.547831Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-29T00:53:07.547857Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-29T00:53:07.547862Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-29T00:53:07.547877Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-29T00:53:07.547880Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-29T00:53:07.547890Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-29T00:53:07.547912Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-29T00:53:07.548017Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }] })
2026-06-29T00:53:07.548092Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }] }), Number(1)))
2026-06-29T00:57:08.171365Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Mon, 29 Jun 2026 02:57:08 +0200
======================================================================
2026-06-29T00:57:08.171753Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-29T00:57:08.171799Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-29T00:57:08.171809Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-29T00:57:08.171833Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-29T00:57:08.172036Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-29T00:57:08.194397Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Mon, 29 Jun 2026 02:57:08 +0200
======================================================================
2026-06-29T00:57:08.194449Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-29T00:57:08.194490Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-29T00:57:08.194492Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-29T00:57:08.194495Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-29T00:57:08.194830Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-29T00:57:08.286121Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Mon, 29 Jun 2026 02:57:08 +0200
======================================================================
2026-06-29T00:57:08.286184Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-29T00:57:08.286237Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-29T00:57:08.286243Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-29T00:57:08.286248Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-29T00:57:08.286883Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-29T00:57:08.409865Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-29T00:57:08.409989Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-29T00:57:08.409999Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-29T00:57:08.410016Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-29T00:57:08.410019Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-29T00:57:08.410037Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-29T00:57:08.410060Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-29T00:57:08.410070Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-29T00:57:08.410109Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-29T00:57:08.410177Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-29T00:57:08.410192Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }] })
2026-06-29T00:57:08.410243Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-29T00:57:08.410281Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }] }), Number(1)))
2026-06-29T00:57:08.412557Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-29T00:57:08.412728Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-29T00:57:08.412756Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-29T00:57:08.412652Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-29T00:57:08.412776Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-29T00:57:08.412780Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-29T00:57:08.412802Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-29T00:57:08.412811Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-29T00:57:08.412815Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-29T00:57:08.412836Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-29T00:57:08.412882Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-29T00:57:08.413058Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }] })
2026-06-29T00:57:08.413168Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }] }), Number(1)))
2026-06-29T00:57:08.503006Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-29T00:57:08.503105Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-29T00:57:08.503157Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-29T00:57:08.503183Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-29T00:57:08.503200Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-29T00:57:08.503225Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-29T00:57:08.503229Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-29T00:57:08.503253Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-29T00:57:08.503262Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-29T00:57:08.503287Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-29T00:57:08.503305Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-29T00:57:08.503432Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-29T00:57:08.503565Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-29T00:58:27.404402Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Mon, 29 Jun 2026 02:58:27 +0200
======================================================================
2026-06-29T00:58:27.404458Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-29T00:58:27.404514Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-29T00:58:27.404520Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-29T00:58:27.404526Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-29T00:58:27.404791Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-29T00:58:27.459885Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-29T00:58:27.459947Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-29T00:58:27.459985Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-29T00:58:27.459985Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-29T00:58:27.459998Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-29T00:58:27.460010Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-29T00:58:27.460012Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-29T00:58:27.460022Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-29T00:58:27.460030Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-29T00:58:27.460038Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-29T00:58:27.460039Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-29T00:58:27.460115Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-29T00:58:27.460161Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-29T00:59:46.703728Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Mon, 29 Jun 2026 02:59:46 +0200
======================================================================
2026-06-29T00:59:46.703778Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-29T00:59:46.703817Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-29T00:59:46.703824Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-29T00:59:46.703829Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-29T00:59:46.704018Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-29T00:59:46.788267Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-29T00:59:46.788361Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-29T00:59:46.788433Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-29T00:59:46.788439Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-29T00:59:46.788448Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-29T00:59:46.788465Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-29T00:59:46.788467Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-29T00:59:46.788480Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-29T00:59:46.788488Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-29T00:59:46.788499Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-29T00:59:46.788502Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-29T00:59:46.788617Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-29T00:59:46.788695Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-29T01:09:21.862155Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Mon, 29 Jun 2026 03:09:21 +0200
======================================================================
2026-06-29T01:09:21.862210Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-29T01:09:21.862258Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-29T01:09:21.862264Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-29T01:09:21.862271Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-29T01:09:21.862474Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-29T01:09:21.963015Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-29T01:09:21.963049Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-29T01:09:21.963076Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-29T01:09:21.963090Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-29T01:09:21.963102Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-29T01:09:21.963100Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-29T01:09:21.963104Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-29T01:09:21.963119Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-29T01:09:21.963132Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-29T01:09:21.963140Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-29T01:09:21.963146Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-29T01:09:21.963220Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-29T01:09:21.963281Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-29T01:13:20.812885Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Mon, 29 Jun 2026 03:13:20 +0200
======================================================================
2026-06-29T01:13:20.812930Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-29T01:13:20.812962Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-29T01:13:20.812968Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-29T01:13:20.812974Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-29T01:13:20.813167Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-29T01:13:20.876686Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-29T01:13:20.876761Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-29T01:13:20.876796Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-29T01:13:20.876800Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-29T01:13:20.876823Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-29T01:13:20.876846Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-29T01:13:20.876850Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-29T01:13:20.876853Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-29T01:13:20.876867Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-29T01:13:20.876878Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-29T01:13:20.876902Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-29T01:13:20.877010Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }] })
2026-06-29T01:13:20.877089Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }] }), Number(1)))
2026-06-29T01:13:51.316414Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Mon, 29 Jun 2026 03:13:51 +0200
======================================================================
2026-06-29T01:13:51.316454Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-29T01:13:51.316480Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-29T01:13:51.316486Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-29T01:13:51.316490Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-29T01:13:51.316627Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-29T01:13:51.351276Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-29T01:13:51.351334Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-29T01:13:51.351374Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-29T01:13:51.351389Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-29T01:13:51.351395Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-29T01:13:51.351409Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-29T01:13:51.351413Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-29T01:13:51.351428Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-29T01:13:51.351431Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-29T01:13:51.351437Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-29T01:13:51.351448Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-29T01:13:51.351527Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-29T01:13:51.351587Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-29T01:22:29.306780Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Mon, 29 Jun 2026 03:22:29 +0200
======================================================================
2026-06-29T01:22:29.306809Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-29T01:22:29.306837Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-29T01:22:29.306839Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-29T01:22:29.306842Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-29T01:22:29.306997Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-29T01:22:29.372501Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-29T01:22:29.372555Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-29T01:22:29.372594Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-29T01:22:29.372599Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-29T01:22:29.372611Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-29T01:22:29.372638Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-29T01:22:29.372643Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-29T01:22:29.372675Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-29T01:22:29.372683Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-29T01:22:29.372695Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-29T01:22:29.372708Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-29T01:22:29.372821Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-29T01:22:29.372882Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-29T01:35:10.667779Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Mon, 29 Jun 2026 03:35:10 +0200
======================================================================
2026-06-29T01:35:10.667821Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-29T01:35:10.667854Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-29T01:35:10.667860Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-29T01:35:10.667865Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-29T01:35:10.668006Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-29T01:35:10.748313Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-29T01:35:10.748377Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-29T01:35:10.748418Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-29T01:35:10.748441Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-29T01:35:10.748460Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-29T01:35:10.748476Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-29T01:35:10.748478Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-29T01:35:10.748482Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-29T01:35:10.748491Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-29T01:35:10.748497Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-29T01:35:10.748514Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-29T01:35:10.748644Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }] })
2026-06-29T01:35:10.748729Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }] }), Number(1)))
2026-06-29T01:52:10.695390Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Mon, 29 Jun 2026 03:52:10 +0200
======================================================================
2026-06-29T01:52:10.695421Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-29T01:52:10.695455Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-29T01:52:10.695458Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-29T01:52:10.695461Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-29T01:52:10.695646Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-29T01:52:10.757295Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-29T01:52:10.757337Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-29T01:52:10.757368Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-29T01:52:10.757388Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-29T01:52:10.757402Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-29T01:52:10.757415Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-29T01:52:10.757426Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-29T01:52:10.757429Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-29T01:52:10.757448Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-29T01:52:10.757457Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-29T01:52:10.757470Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-29T01:52:10.757534Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }] })
2026-06-29T01:52:10.757620Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }] }), Number(1)))
2026-06-29T04:11:05.081463Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Mon, 29 Jun 2026 06:11:05 +0200
======================================================================
2026-06-29T04:11:05.081516Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-29T04:11:05.081553Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-29T04:11:05.081555Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-29T04:11:05.081559Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-29T04:11:05.081708Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-29T04:11:05.204120Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Mon, 29 Jun 2026 06:11:05 +0200
======================================================================
2026-06-29T04:11:05.204150Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-29T04:11:05.204176Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-29T04:11:05.204178Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-29T04:11:05.204182Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-29T04:11:05.204341Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-29T04:11:05.243769Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-29T04:11:05.243888Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-29T04:11:05.243985Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-29T04:11:05.243998Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-29T04:11:05.244018Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-29T04:11:05.244023Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-29T04:11:05.244046Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-29T04:11:05.244059Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-29T04:11:05.244075Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-29T04:11:05.244719Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-29T04:11:05.244810Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-29T04:11:05.244999Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }] })
2026-06-29T04:11:05.247704Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }] }), Number(1)))
2026-06-29T04:11:05.368958Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Mon, 29 Jun 2026 06:11:05 +0200
======================================================================
2026-06-29T04:11:05.369008Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-29T04:11:05.369043Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-29T04:11:05.369047Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-29T04:11:05.369051Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-29T04:11:05.369226Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-29T04:11:05.381928Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-29T04:11:05.381996Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-29T04:11:05.382040Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-29T04:11:05.382057Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-29T04:11:05.382069Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-29T04:11:05.382089Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-29T04:11:05.382103Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-29T04:11:05.382115Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-29T04:11:05.382129Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-29T04:11:05.382143Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-29T04:11:05.382156Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-29T04:11:05.382302Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }] })
2026-06-29T04:11:05.382418Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }] }), Number(1)))
2026-06-29T04:11:05.503005Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-29T04:11:05.503080Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-29T04:11:05.503125Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-29T04:11:05.503181Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-29T04:11:05.503199Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-29T04:11:05.503204Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-29T04:11:05.503215Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-29T04:11:05.503216Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-29T04:11:05.503229Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-29T04:11:05.503282Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-29T04:11:05.503291Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-29T04:11:05.503410Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }] })
2026-06-29T04:11:05.503609Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }] }), Number(1)))
2026-06-29T04:38:53.354034Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Mon, 29 Jun 2026 06:38:53 +0200
======================================================================
2026-06-29T04:38:53.354086Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-29T04:38:53.354137Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-29T04:38:53.354140Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-29T04:38:53.354144Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-29T04:38:53.354364Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-29T04:38:53.422274Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.195" } }
2026-06-29T04:38:53.422311Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-29T04:38:53.422340Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-29T04:38:53.422358Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-29T04:38:53.422370Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-29T04:38:53.422387Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-29T04:38:53.422389Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-29T04:38:53.422392Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-29T04:38:53.422408Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-29T04:38:53.422417Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-29T04:38:53.422428Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-29T04:38:53.422489Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }] })
2026-06-29T04:38:53.422562Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }] }), Number(1)))
2026-06-29T09:04:45.551334Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Mon, 29 Jun 2026 11:04:45 +0200
======================================================================
2026-06-29T09:04:45.551377Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-29T09:04:45.551419Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-29T09:04:45.551425Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-29T09:04:45.551432Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-29T09:04:45.551636Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-29T09:04:45.585941Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.193" } }
2026-06-29T09:04:45.586101Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-29T09:04:45.586171Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-29T09:04:45.586190Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-29T09:04:45.586230Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-29T09:04:45.586261Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-29T09:04:45.586275Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-29T09:04:45.586285Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-29T09:04:45.586323Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-29T09:04:45.586365Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-29T09:04:45.586389Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-29T09:04:45.586536Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }] })
2026-06-29T09:04:45.586815Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }] }), Number(1)))
2026-06-30T09:58:41.568155Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 11:58:41 +0200
======================================================================
2026-06-30T09:58:41.568240Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T09:58:41.568294Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T09:58:41.568301Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T09:58:41.568306Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T09:58:41.568501Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T09:58:41.599309Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T09:58:41.599356Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T09:58:41.599394Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T09:58:41.599415Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T09:58:41.599426Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T09:58:41.599439Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T09:58:41.599440Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T09:58:41.599443Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T09:58:41.599452Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T09:58:41.599459Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T09:58:41.599474Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T09:58:41.599565Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-30T09:58:41.599696Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-30T10:27:53.475908Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 12:27:53 +0200
======================================================================
2026-06-30T10:27:53.475958Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T10:27:53.475995Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T10:27:53.476001Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T10:27:53.476006Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T10:27:53.476189Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T10:27:53.505929Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T10:27:53.505971Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T10:27:53.506009Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T10:27:53.506021Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T10:27:53.506028Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T10:27:53.506040Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T10:27:53.506044Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T10:27:53.506061Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T10:27:53.506060Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T10:27:53.506069Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T10:27:53.506080Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T10:27:53.506151Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }] })
2026-06-30T10:27:53.506210Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }] }), Number(1)))
2026-06-30T11:11:53.498533Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 13:11:53 +0200
======================================================================
2026-06-30T11:11:53.498599Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T11:11:53.498683Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T11:11:53.498688Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T11:11:53.498692Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T11:11:53.498896Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T11:11:53.625708Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T11:11:53.625808Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T11:11:53.625849Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T11:11:53.625867Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T11:11:53.625887Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T11:11:53.625915Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T11:11:53.625919Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T11:11:53.625919Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T11:11:53.625947Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T11:11:53.625958Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T11:11:53.625969Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T11:11:53.626086Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }] })
2026-06-30T11:11:53.626161Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }] }), Number(1)))
2026-06-30T11:11:53.627056Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 13:11:53 +0200
======================================================================
2026-06-30T11:11:53.627088Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T11:11:53.627123Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T11:11:53.627128Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T11:11:53.627133Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T11:11:53.627281Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T11:11:53.698757Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T11:11:53.698822Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T11:11:53.698873Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T11:11:53.698879Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T11:11:53.698889Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T11:11:53.698891Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T11:11:53.698925Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T11:11:53.698972Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T11:11:53.699116Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-30T11:11:53.699187Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T11:11:53.699193Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T11:11:53.699199Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-30T11:11:53.699750Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T11:16:32.624424Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 13:16:32 +0200
======================================================================
2026-06-30T11:16:32.624459Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T11:16:32.624487Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T11:16:32.624493Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T11:16:32.624498Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T11:16:32.624719Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T11:16:32.643475Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T11:16:32.643538Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T11:16:32.643580Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T11:16:32.643591Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T11:16:32.643607Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T11:16:32.643631Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T11:16:32.643635Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T11:16:32.643638Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T11:16:32.643653Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T11:16:32.643677Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T11:16:32.643690Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T11:16:32.643810Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }] })
2026-06-30T11:16:32.643888Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }] }), Number(1)))
2026-06-30T11:16:47.652312Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 13:16:47 +0200
======================================================================
2026-06-30T11:16:47.652351Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T11:16:47.652384Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T11:16:47.652389Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T11:16:47.652393Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T11:16:47.652531Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T11:16:47.736835Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T11:16:47.736887Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T11:16:47.736917Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T11:16:47.736924Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T11:16:47.736929Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T11:16:47.736967Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T11:16:47.736972Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T11:16:47.736989Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T11:16:47.736991Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T11:16:47.737003Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T11:16:47.737018Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T11:16:47.737137Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-30T11:16:47.737200Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-30T11:48:57.451021Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 13:48:57 +0200
======================================================================
2026-06-30T11:48:57.451069Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T11:48:57.451099Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T11:48:57.451102Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T11:48:57.451106Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T11:48:57.451248Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T11:48:57.488115Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 13:48:57 +0200
======================================================================
2026-06-30T11:48:57.488173Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T11:48:57.488216Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T11:48:57.488224Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T11:48:57.488229Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T11:48:57.488449Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T11:48:57.504010Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T11:48:57.504055Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T11:48:57.504077Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T11:48:57.504090Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T11:48:57.504100Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T11:48:57.504112Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T11:48:57.504114Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T11:48:57.504123Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T11:48:57.504132Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T11:48:57.504141Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T11:48:57.504149Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T11:48:57.504260Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-30T11:48:57.504331Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-30T11:48:57.569462Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T11:48:57.569542Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T11:48:57.569600Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T11:48:57.569613Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T11:48:57.569615Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T11:48:57.569647Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T11:48:57.569649Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T11:48:57.569685Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T11:48:57.569701Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T11:48:57.569711Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T11:48:57.569723Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T11:48:57.569863Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-30T11:48:57.569953Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-30T12:08:53.000951Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 14:08:53 +0200
======================================================================
2026-06-30T12:08:53.000996Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T12:08:53.001034Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T12:08:53.001038Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T12:08:53.001041Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T12:08:53.001664Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T12:08:53.089098Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T12:08:53.089145Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T12:08:53.089173Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T12:08:53.089184Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T12:08:53.089195Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T12:08:53.089207Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T12:08:53.089208Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T12:08:53.089219Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T12:08:53.089225Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T12:08:53.089233Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T12:08:53.089239Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T12:08:53.089358Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }] })
2026-06-30T12:08:53.089425Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }] }), Number(1)))
2026-06-30T12:12:17.344926Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 14:12:17 +0200
======================================================================
2026-06-30T12:12:17.344966Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T12:12:17.344992Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T12:12:17.344995Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T12:12:17.344998Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T12:12:17.345144Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T12:12:17.447367Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T12:12:17.447416Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T12:12:17.447450Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T12:12:17.447447Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T12:12:17.447463Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T12:12:17.447480Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T12:12:17.447483Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T12:12:17.447494Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T12:12:17.447511Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T12:12:17.447520Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T12:12:17.447518Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T12:12:17.447603Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }] })
2026-06-30T12:12:17.447649Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }] }), Number(1)))
2026-06-30T13:18:27.385586Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 15:18:27 +0200
======================================================================
2026-06-30T13:18:27.385639Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T13:18:27.385670Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T13:18:27.385674Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T13:18:27.385677Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T13:18:27.385869Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T13:18:27.489761Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T13:18:27.489848Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T13:18:27.489898Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T13:18:27.489906Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T13:18:27.489914Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T13:18:27.489940Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T13:18:27.489944Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T13:18:27.489968Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T13:18:27.489982Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T13:18:27.489988Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T13:18:27.489997Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T13:18:27.490247Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-30T13:18:27.490334Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-30T13:18:27.535976Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 15:18:27 +0200
======================================================================
2026-06-30T13:18:27.536034Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T13:18:27.536096Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T13:18:27.536101Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T13:18:27.536106Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T13:18:27.536334Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T13:18:27.588516Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T13:18:27.588623Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T13:18:27.588694Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T13:18:27.588734Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T13:18:27.588751Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T13:18:27.588773Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T13:18:27.588777Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T13:18:27.588779Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T13:18:27.588798Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T13:18:27.588812Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T13:18:27.588824Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T13:18:27.589018Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }] })
2026-06-30T13:18:27.589120Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }] }), Number(1)))
2026-06-30T13:22:44.935550Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 15:22:44 +0200
======================================================================
2026-06-30T13:22:44.935581Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T13:22:44.935607Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T13:22:44.935609Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T13:22:44.935612Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T13:22:44.935712Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T13:22:44.995833Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T13:22:44.995883Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T13:22:44.995911Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T13:22:44.995921Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T13:22:44.995924Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T13:22:44.995950Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T13:22:44.995952Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T13:22:44.995963Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T13:22:44.995976Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T13:22:44.995983Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T13:22:44.995982Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T13:22:44.996110Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-30T13:22:44.996180Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-30T13:40:56.928934Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 15:40:56 +0200
======================================================================
2026-06-30T13:40:56.928978Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T13:40:56.929007Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T13:40:56.929009Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T13:40:56.929012Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T13:40:56.929130Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T13:40:57.025963Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T13:40:57.026009Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T13:40:57.026037Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T13:40:57.026039Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T13:40:57.026052Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T13:40:57.026077Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T13:40:57.026080Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T13:40:57.026090Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T13:40:57.026097Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T13:40:57.026106Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T13:40:57.026112Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T13:40:57.026187Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }] })
2026-06-30T13:40:57.026266Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }] }), Number(1)))
2026-06-30T14:55:29.328306Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 16:55:29 +0200
======================================================================
2026-06-30T14:55:29.328347Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T14:55:29.328382Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T14:55:29.328385Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T14:55:29.328389Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T14:55:29.328556Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T14:55:29.408351Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T14:55:29.408404Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T14:55:29.408453Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T14:55:29.408471Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T14:55:29.408482Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T14:55:29.408492Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T14:55:29.408500Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T14:55:29.408504Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T14:55:29.408521Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T14:55:29.408528Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T14:55:29.408539Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T14:55:29.408601Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-30T14:55:29.408712Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-30T15:23:06.511508Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 17:23:06 +0200
======================================================================
2026-06-30T15:23:06.511597Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T15:23:06.511637Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T15:23:06.511642Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T15:23:06.511649Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T15:23:06.511865Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T15:23:06.594065Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 17:23:06 +0200
======================================================================
2026-06-30T15:23:06.594098Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T15:23:06.594130Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T15:23:06.594133Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T15:23:06.594136Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T15:23:06.594288Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T15:23:06.621517Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T15:23:06.621604Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T15:23:06.621677Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T15:23:06.621687Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T15:23:06.621711Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T15:23:06.621725Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T15:23:06.621728Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T15:23:06.621740Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T15:23:06.621748Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T15:23:06.621756Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T15:23:06.621777Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T15:23:06.621861Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-30T15:23:06.621915Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-30T15:23:06.656849Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T15:23:06.656898Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T15:23:06.656931Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T15:23:06.656939Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T15:23:06.656942Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T15:23:06.656971Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T15:23:06.656973Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T15:23:06.656987Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T15:23:06.656995Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T15:23:06.657012Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T15:23:06.657009Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T15:23:06.657102Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }] })
2026-06-30T15:23:06.657158Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }] }), Number(1)))
2026-06-30T15:27:12.616760Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 17:27:12 +0200
======================================================================
2026-06-30T15:27:12.616846Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T15:27:12.616899Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T15:27:12.616906Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T15:27:12.616932Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T15:27:12.617359Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T15:27:12.718764Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T15:27:12.718841Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T15:27:12.718882Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T15:27:12.718882Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T15:27:12.718894Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T15:27:12.718910Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T15:27:12.718912Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T15:27:12.718931Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T15:27:12.718941Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T15:27:12.718954Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T15:27:12.718959Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T15:27:12.719096Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-30T15:27:12.719177Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-30T15:27:13.809133Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 17:27:13 +0200
======================================================================
2026-06-30T15:27:13.809174Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T15:27:13.809207Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T15:27:13.809211Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T15:27:13.809214Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T15:27:13.809830Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T15:27:13.896776Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T15:27:13.896812Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T15:27:13.896850Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T15:27:13.896848Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T15:27:13.896860Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T15:27:13.896885Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T15:27:13.896887Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T15:27:13.896902Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T15:27:13.896910Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T15:27:13.896915Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T15:27:13.896920Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T15:27:13.897031Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }] })
2026-06-30T15:27:13.897092Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }] }), Number(1)))
2026-06-30T16:04:20.541207Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 18:04:20 +0200
======================================================================
2026-06-30T16:04:20.541267Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T16:04:20.541321Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T16:04:20.541325Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T16:04:20.541330Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T16:04:20.570040Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T16:04:20.587361Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 18:04:20 +0200
======================================================================
2026-06-30T16:04:20.587439Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T16:04:20.587508Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T16:04:20.587517Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T16:04:20.587524Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T16:04:20.587821Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T16:04:20.707625Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T16:04:20.707714Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T16:04:20.707764Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T16:04:20.707773Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T16:04:20.707799Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T16:04:20.707843Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T16:04:20.707846Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T16:04:20.707860Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T16:04:20.707869Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T16:04:20.707880Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T16:04:20.707892Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T16:04:20.708050Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }] })
2026-06-30T16:04:20.708106Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }] }), Number(1)))
2026-06-30T16:04:20.757286Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T16:04:20.757372Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T16:04:20.757419Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T16:04:20.757422Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T16:04:20.757434Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T16:04:20.757464Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T16:04:20.757468Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T16:04:20.757489Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T16:04:20.757501Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T16:04:20.757502Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T16:04:20.757514Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T16:04:20.757648Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }] })
2026-06-30T16:04:20.757741Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }] }), Number(1)))
2026-06-30T16:20:17.883897Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 18:20:17 +0200
======================================================================
2026-06-30T16:20:17.883936Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T16:20:17.883969Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T16:20:17.883972Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T16:20:17.883976Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T16:20:17.884123Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T16:20:18.051393Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 18:20:18 +0200
======================================================================
2026-06-30T16:20:18.051456Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T16:20:18.051508Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T16:20:18.051528Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T16:20:18.051533Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T16:20:18.051968Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T16:20:18.111103Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T16:20:18.111185Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T16:20:18.111251Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T16:20:18.111327Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T16:20:18.111584Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T16:20:18.111597Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T16:20:18.111616Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T16:20:18.111620Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T16:20:18.111641Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T16:20:18.111654Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T16:20:18.111719Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T16:20:18.111999Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-30T16:20:18.112095Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-30T16:20:18.235682Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T16:20:18.235733Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T16:20:18.235767Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T16:20:18.235768Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T16:20:18.235774Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T16:20:18.235800Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T16:20:18.235802Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T16:20:18.235814Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T16:20:18.235838Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T16:20:18.235843Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T16:20:18.235852Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T16:20:18.235929Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }] })
2026-06-30T16:20:18.235985Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }] }), Number(1)))
2026-06-30T16:34:00.424523Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 18:34:00 +0200
======================================================================
2026-06-30T16:34:00.424577Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T16:34:00.424618Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T16:34:00.424625Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T16:34:00.424631Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T16:34:00.424820Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T16:34:00.481128Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T16:34:00.481181Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T16:34:00.481211Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T16:34:00.481214Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T16:34:00.481239Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T16:34:00.481263Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T16:34:00.481268Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T16:34:00.481280Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T16:34:00.481290Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T16:34:00.481301Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T16:34:00.481339Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T16:34:00.481423Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-30T16:34:00.481515Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-30T17:56:39.898812Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 19:56:39 +0200
======================================================================
2026-06-30T17:56:39.898848Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T17:56:39.898876Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T17:56:39.898879Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T17:56:39.898881Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T17:56:39.898999Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T17:56:39.985596Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.196" } }
2026-06-30T17:56:39.985643Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T17:56:39.985679Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T17:56:39.985693Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T17:56:39.985696Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T17:56:39.985713Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T17:56:39.985715Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T17:56:39.985725Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T17:56:39.985731Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T17:56:39.985738Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T17:56:39.985754Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T17:56:39.985884Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }] })
2026-06-30T17:56:39.985961Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }] }), Number(1)))
2026-06-30T18:12:48.720223Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 20:12:48 +0200
======================================================================
2026-06-30T18:12:48.720287Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T18:12:48.720340Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T18:12:48.720346Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T18:12:48.720351Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T18:12:48.721790Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T18:12:48.762311Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.197" } }
2026-06-30T18:12:48.762347Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T18:12:48.762370Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T18:12:48.762373Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T18:12:48.762392Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T18:12:48.762405Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T18:12:48.762416Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T18:12:48.762420Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T18:12:48.762429Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T18:12:48.762436Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T18:12:48.762444Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T18:12:48.762556Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-30T18:12:48.762603Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))
2026-06-30T20:13:06.691370Z INFO ardour_mcp_server:
======================================================================
NEW SERVER RUN: Tue, 30 Jun 2026 22:13:06 +0200
======================================================================
2026-06-30T20:13:06.691418Z INFO ardour_mcp_server: Attempting to create OSC sender for Ardour at 127.0.0.1:3819
2026-06-30T20:13:06.691451Z INFO ardour_mcp_server: OSC sender created and connected to Ardour at 127.0.0.1:3819
2026-06-30T20:13:06.691454Z INFO ardour_mcp_server: Sending /set_surface to Ardour to enable OSC feedback.
2026-06-30T20:13:06.691458Z INFO ardour_mcp_server: Targeting feedback port: 9099
2026-06-30T20:13:06.691620Z INFO ardour_mcp_server: /set_surface command sent successfully to Ardour.
2026-06-30T20:13:06.767092Z INFO serve_inner: rmcp::service: Service initialized as server peer_info=InitializeRequestParam { protocol_version: ProtocolVersion("2025-11-25"), capabilities: ClientCapabilities { experimental: None, roots: Some(RootsCapabilities { list_changed: None }), sampling: None }, client_info: Implementation { name: "claude-code", version: "2.1.197" } }
2026-06-30T20:13:06.767160Z INFO ardour_mcp_server: Ardour MCP server started and waiting for connections...
2026-06-30T20:13:06.767189Z INFO ardour_mcp_server: Starting OSC listener for Ardour events on 127.0.0.1:9099
2026-06-30T20:13:06.767212Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListToolsRequest(Request { method: ListToolsRequestMethod, params: None }), Number(1)))
2026-06-30T20:13:06.767238Z INFO rmcp::service: received request id=1 request=ListToolsRequest(Request { method: ListToolsRequestMethod, params: None })
2026-06-30T20:13:06.767248Z ERROR ardour_mcp_server: OSC listener task failed: Failed to bind Tokio UDP socket for OSC on 127.0.0.1:9099: Address already in use (os error 98)
2026-06-30T20:13:06.767263Z DEBUG rmcp::service: new event evt=PeerMessage(Request(ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None }), Number(2)))
2026-06-30T20:13:06.767269Z INFO rmcp::service: received request id=2 request=ListResourcesRequest(Request { method: ListResourcesRequestMethod, params: None })
2026-06-30T20:13:06.767289Z DEBUG ardour_mcp_server: Listing resources. Count: 2, Content: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }]
2026-06-30T20:13:06.767302Z INFO rmcp::service: response message id=2 result=ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] })
2026-06-30T20:13:06.767324Z DEBUG rmcp::service: new event evt=ToSink(Response(ListResourcesResult(ListResourcesResult { next_cursor: None, resources: [Annotated { raw: RawResource { uri: "ardour:/state/playback", name: "Ardour Playback State", description: Some("Current playback state of Ardour (e.g., Playing, Stopped, Unknown)."), mime_type: None, size: None }, annotations: None }, Annotated { raw: RawResource { uri: "ardour:/state/transport_frame", name: "Ardour Transport Frame Position", description: Some("Current playhead position in samples. Returns 'Unknown' if not yet reported by Ardour."), mime_type: None, size: None }, annotations: None }] }), Number(2)))
2026-06-30T20:13:06.767384Z INFO rmcp::service: response message id=1 result=ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] })
2026-06-30T20:13:06.767491Z DEBUG rmcp::service: new event evt=ToSink(Response(ListToolsResult(ListToolsResult { next_cursor: None, tools: [Tool { name: "set_track_rec_enable", description: "Sets the record enable state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rec_st": Object {"description": String("The desired record enable state. 0 for off, 1 for on."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rec_st"), String("rid")], "title": String("SetTrackRecEnableArgs"), "type": String("object")} }, Tool { name: "save_state", description: "Saves the current session state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "add_marker", description: "Adds a location marker at the current playhead position.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_selected_strip_pan_stereo_width", description: "Sets the stereo width for the currently selected stereo strip's panner.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"width": Object {"description": String("The desired stereo width for the currently selected strip. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("width")], "title": String("SetSelectedStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "select_strip", description: "Selects a specific strip (track/bus) in Ardour.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus to select."), "format": String("int32"), "type": String("integer")}, "select_state": Object {"description": String("The desired select state (true to select). Currently, only true (1) is effective for selection."), "type": String("boolean")}}, "required": Array [String("rid"), String("select_state")], "title": String("SelectStripArgs"), "type": String("object")} }, Tool { name: "toggle_punch_in", description: "Toggles the Punch In state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "access_action", description: "Executes a specified Ardour menu action by its name.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"action_name": Object {"description": String("The name of the Ardour menu action to execute (e.g., 'Editor/zoom-to-session')."), "type": String("string")}}, "required": Array [String("action_name")], "title": String("AccessActionArgs"), "type": String("object")} }, Tool { name: "set_track_gain_db", description: "Sets the gain of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_db": Object {"description": String("The desired gain in dB. Valid range: -400.0 to 6.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_db"), String("rid")], "title": String("SetTrackGainDBArgs"), "type": String("object")} }, Tool { name: "rec_enable_toggle", description: "Toggles the master record enable or selected track record enable.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "redo", description: "Redoes the last undone action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "prev_marker", description: "Moves the playhead to the previous location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "undo", description: "Undoes the last action.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_abs", description: "Sets the absolute trim of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_abs": Object {"description": String("The desired absolute trim. Valid range: 0.1 to 10.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_abs")], "title": String("SetTrackTrimAbsArgs"), "type": String("object")} }, Tool { name: "loop_toggle", description: "Toggles loop playback mode.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_strip_plugin_active", description: "Activates or deactivates a plugin on a specific strip slot.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"active_state": Object {"description": String("The desired activation state (true for active, false for inactive)."), "type": String("boolean")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("active_state"), String("plugin_slot"), String("rid")], "title": String("SetStripPluginActiveArgs"), "type": String("object")} }, Tool { name: "rewind", description: "Rewinds the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_trim_db", description: "Sets the trim of a specific track in dB.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "trim_db": Object {"description": String("The desired trim in dB. Valid range: -20.0 to 20.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("trim_db")], "title": String("SetTrackTrimDBArgs"), "type": String("object")} }, Tool { name: "set_strip_plugin_parameter", description: "Sets a specific parameter of a plugin on a strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"param_id": Object {"description": String("The 1-indexed ID of the parameter within the plugin."), "format": String("int32"), "type": String("integer")}, "plugin_slot": Object {"description": String("The 1-indexed slot of the plugin on the strip."), "format": String("int32"), "type": String("integer")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "value": Object {"description": String("The desired parameter value, normalized (0.0 to 1.0)."), "format": String("float"), "type": String("number")}}, "required": Array [String("param_id"), String("plugin_slot"), String("rid"), String("value")], "title": String("SetStripPluginParameterArgs"), "type": String("object")} }, Tool { name: "set_strip_pan_stereo_width", description: "Sets the stereo width for a panner on a stereo strip.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the stereo track/bus."), "format": String("int32"), "type": String("integer")}, "width": Object {"description": String("The desired stereo width. Valid range: 0.0 to 1.0. Default is 1.0 (full width)."), "format": String("float"), "type": String("number")}}, "required": Array [String("rid"), String("width")], "title": String("SetStripPanStereoWidthArgs"), "type": String("object")} }, Tool { name: "set_track_mute", description: "Sets the mute state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"mute_state": Object {"description": String("The desired mute state (true for mute, false for unmute)."), "type": String("boolean")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("mute_state"), String("rid")], "title": String("SetTrackMuteArgs"), "type": String("object")} }, Tool { name: "set_track_gain_abs", description: "Sets the absolute gain of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"gain_abs": Object {"description": String("The desired absolute gain. Valid range: 0.0 to 2.0."), "format": String("float"), "type": String("number")}, "rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("gain_abs"), String("rid")], "title": String("SetTrackGainAbsArgs"), "type": String("object")} }, Tool { name: "toggle_punch_out", description: "Toggles the Punch Out state.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_track_solo", description: "Sets the solo state of a specific track.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"rid": Object {"description": String("The Router ID (rid) of the track/bus."), "format": String("int32"), "type": String("integer")}, "solo_st": Object {"description": String("The desired solo state. 0 for solo off, 1 for solo on."), "format": String("int32"), "type": String("integer")}}, "required": Array [String("rid"), String("solo_st")], "title": String("SetTrackSoloArgs"), "type": String("object")} }, Tool { name: "transport_stop", description: "Stops Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "set_transport_speed", description: "Sets Ardour's transport speed. Valid range: -8.0 to 8.0.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"speed": Object {"description": String("The desired transport speed. Valid range: -8.0 to 8.0."), "format": String("float"), "type": String("number")}}, "required": Array [String("speed")], "title": String("SetTransportSpeedArgs"), "type": String("object")} }, Tool { name: "goto_start", description: "Moves the playhead to the session start.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "goto_end", description: "Moves the playhead to the session end.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "transport_play", description: "Starts Ardour playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "next_marker", description: "Moves the playhead to the next location marker.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "locate", description: "Locates the playhead to a specific sample position and optionally starts playback.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "properties": Object {"roll": Object {"description": String("Whether to start playing after locating. 0 for stop, 1 for play."), "format": String("int32"), "type": String("integer")}, "spos": Object {"description": String("The position in samples to locate to."), "format": String("int64"), "type": String("integer")}}, "required": Array [String("roll"), String("spos")], "title": String("LocateToolArgs"), "type": String("object")} }, Tool { name: "ffwd", description: "Fast forwards the transport.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }, Tool { name: "toggle_all_rec_enables", description: "Toggles the record enable state for ALL tracks.", input_schema: {"$schema": String("http://json-schema.org/draft-07/schema#"), "title": String("EmptyObject"), "type": String("object")} }] }), Number(1)))