A Model Context Protocol (MCP) server for Bitwig Studio that allows Claude to control your DAW.
Warning! This is a work in progress. Documentation and implementation may be out of sync, and not all functionality may work as expected.
- AI-Powered Music Production: Control Bitwig Studio with Claude via MCP
- Transport Controls: Play, stop, and set tempo
- Mixer Controls: Adjust volume, pan, and mute/unmute tracks
- Device Controls: Manipulate device parameters
- Project Information: Access track and device information
- Templates and Prompts: Pre-configured workflows for common tasks
- Python 3.10+
- Bitwig Studio 5.2+
- Driven by Moss 5.2+
- Claude Desktop app with MCP support
# Clone the repository
git clone https://github.com/jxstanford/bitwig-mcp-server.git
cd bitwig-mcp-server
# Install dependencies
uv sync- If necessary, add a virtual MIDI device for OSC
- Follow Driven by Moss installation instructions for Bitwig 5.2+
- Open or restart Bitwig Studio
- Go to Settings > Controllers
- Click "Add Controller" and select "Open Sound Control" and "OSC"
- Configure the receive port (default: 8000) and send port (default: 9000)
- Enable the controller
# Run the server with default settings
python -m bitwig_mcp_server
# Or run with custom settings
python -m bitwig_mcp_server --host 127.0.0.1 --send-port 8000 --receive-port 9000 --transport stdio --debug# Install the server in Claude Desktop
mcp install bitwig_mcp_server/__main__.pyThen open Claude Desktop and select the Bitwig MCP Server from the MCP Servers dropdown.
The Bitwig MCP Server provides the following tools:
- play: Toggle play/pause state or set it to a specific state
- stop: Stop playback
- set_tempo: Set the tempo in beats per minute
- set_track_volume: Set track volume (0-128)
- set_track_pan: Set track pan position (0-128)
- set_track_mute: Mute, unmute, or toggle mute state for a track
- set_device_parameter: Set a device parameter value (0-128)
- get_project_info: Get information about the current Bitwig project
- get_tracks_info: Get information about all tracks in the project
- get_track_info: Get information about a specific track
- get_device_parameters: Get information about the selected device parameters
- bitwig://project/info: Project information
- bitwig://transport: Transport state
- bitwig://tracks: All tracks in the project
- bitwig://track/{index}: Specific track information
- bitwig://devices: Active devices
- bitwig://device/parameters: Parameters for the selected device
- setup_mixing_session: Set up a new mixing session with default settings
- create_track_template: Create a track template with specific devices and settings
- optimize_track_settings: Get recommendations for optimizing track settings
The server can be configured through:
- Environment variables or
.envfile - Command line arguments
- Settings in
bitwig_mcp_server/settings.py
python -m bitwig_mcp_server --help# Install dev dependencies
uv sync
# Install pre-commit hooks
uv run pre-commit install# Run unit tests (no Bitwig required)
make test
# Run all tests including Bitwig integration tests
# (requires Bitwig Studio running with OSC enabled)
make test-all# Run code quality checks
make checkContributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.
Thanks to Jürgen Moßgraber for publishing the Driven by Moss package. This package leverages that package to interact with Bitwig.