A Model Context Protocol (MCP) server that provides programmatic control over Ardour DAW through OSC (Open Sound Control). This server enables AI-assisted music production workflows by allowing external applications to control Ardour sessions, tracks, transport, and more.
- Get session information (name, tempo, time signature, track count)
- Save sessions
- Transport control (play, stop, record, locate)
- Create audio and MIDI tracks
- Get track information (name, volume, mute, solo status)
- Set track properties (name, volume, mute, solo, record enable)
- Start/stop playback and recording
- Set tempo
- Jump to specific time positions
- Get transport state information
- Enable/disable recording on tracks
- Start recording with transport
- Ardour DAW (version 5.0 or later) installed and running
- Python 3.10+
- UV package manager (recommended) or pip
If you have this as a git repository:
git clone <repository-url>
cd ardour-mcpUsing UV (recommended):
uv syncUsing pip:
pip install -e .-
Open Ardour
-
Go to Edit → Preferences (or Ardour → Preferences on macOS)
-
Navigate to Control Surfaces
-
Enable Open Sound Control (OSC)
-
Click Show Protocol Settings
-
Configure the following settings:
- OSC Server Port:
3819(default) - Reply Port:
9000(or any available port) - Bank Size:
0(for unlimited) - Send Page Size:
0 - Plugin Page Size:
0 - Gain Mode:
dB - Debug Mode: Enable for troubleshooting (optional)
- OSC Server Port:
-
Click OK and restart Ardour
Using UV:
uv run MCP_Server/server.pyUsing Python directly:
python -m MCP_Server.serverAdd the following entry to your cline_mcp_settings.json:
{
"mcpServers": {
"github.com/snakkrz/ardour-mcp": {
"command": "uv",
"args": [
"run",
"--directory",
"/home/snakkrz/Code/Projects/ardour-mcp",
"MCP_Server/server.py"
],
"disabled": false,
"autoApprove": []
}
}
}get_session_info()- Get current session detailsget_transport_info()- Get transport statesave_session()- Save the current session
start_playback()- Start playingstop_playback()- Stop playingstart_recording()- Start recordingset_tempo(tempo)- Set session tempo in BPMgoto_position(position)- Jump to time position in seconds
get_track_info(track_index)- Get track informationcreate_track(track_type, name)- Create new audio/MIDI trackset_track_name(track_index, name)- Rename trackset_track_volume(track_index, volume)- Set track volume (0.0-1.0)set_track_mute(track_index, mute)- Mute/unmute trackset_track_solo(track_index, solo)- Solo/unsolo trackrecord_enable(track_index, enable)- Enable/disable recording
# Get session information
session_info = get_session_info()
# Create a new MIDI track
create_track("midi", "Lead Synth")
# Set tempo to 128 BPM
set_tempo(128.0)
# Start playback
start_playback()
# Create and configure an audio track
create_track("audio", "Vocals")
set_track_volume(2, 0.8) # Set track 2 volume to 80%
record_enable(2, True) # Enable recording on track 2
# Start recording
start_recording()-
"Could not connect to Ardour"
- Ensure Ardour is running
- Verify OSC is enabled in Ardour preferences
- Check that port 3819 is not blocked by firewall
- Try restarting Ardour after enabling OSC
-
"OSC communication error"
- Verify Ardour OSC settings match server configuration
- Check Ardour's OSC debug output for error messages
- Ensure no other applications are using the OSC ports
-
"No response from Ardour"
- Increase timeout values in the server code
- Check Ardour's OSC feedback settings
- Verify the receive port (9000) is available
Enable debug logging by setting the log level:
logging.getLogger("ArdourMCPServer").setLevel(logging.DEBUG)Check Ardour's OSC debug output in the application logs or console.
The server uses OSC (Open Sound Control) to communicate with Ardour:
- OSC Client: Sends commands to Ardour (port 3819)
- OSC Server: Receives feedback from Ardour (port 9000)
- MCP Framework: Provides tools interface for external applications
| Feature | Ardour MCP | Ableton MCP |
|---|---|---|
| Communication | OSC | Custom Socket |
| Session Model | Linear Timeline | Session View + Arrangement |
| Track Types | Audio/MIDI | Audio/MIDI/Return |
| Plugin Control | OSC Parameters | Live API |
| Audio Import | File-based | File + Live Browser |
| Real-time | Full Support | Full Support |
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
MIT License - see LICENSE file for details.
- Inspired by the Ableton MCP Server
- Built with the Model Context Protocol
- Uses python-osc for OSC communication