- Home
- MCP servers
- Digitakt MIDI
Digitakt MIDI
- python
1
GitHub Stars
python
Language
6 months ago
First Indexed
2 months ago
Catalog Refreshed
Documentation & install
Readme and setup notes from the catalogue, plus a client-ready config you can copy for your MCP host.
Installation
Add the following to your MCP client configuration file.
Configuration
View docs{
"mcpServers": {
"feamster-digitakt-midi-mcp": {
"command": "/Users/feamster/src/digitakt-midi-mcp/venv/bin/python",
"args": [
"/Users/feamster/src/digitakt-midi-mcp/server.py"
]
}
}
}You can control a Digitakt MIDI device from a dedicated MCP server that exposes a rich set of commands for playing notes, moving patterns, adjusting parameters in real time, and exporting or recording MIDI data. This server runs Python code locally, communicates with the Digitakt over USB/MIDI, and lets you orchestrate complex performances and live workflows with precise timing.
How to use
Run the MCP server locally and connect your Digitakt MIDI device. You can trigger notes, send CCs, change patterns, run NRPNs, and manage transport from an MCP client or script. Use the provided tools to sequence drums, melodies, and automation in tight sync with MIDI Clock.
How to install
# Create and activate a virtual environment
python3 -m venv venv
source venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Ensure your Digitakt II is connected via USB with Overbridge
# Optional: configure MIDI per-track channels on the Digitakt for MCP triggering
# Settings → MIDI → CONFIG → CHANNELS
# Set Track N IN channel to N for N = 1..16
Configuration and usage notes
To run the server from your local environment, start the Python script directly after activating your environment. The server script is named server.py and is the main entry point for MCP communication.
If you want to integrate with Claude Desktop, add a configuration block that points to your local Python executable and the server script. The following example shows how Claude Desktop can launch the server from a configured path.
{
"mcpServers": {
"digitakt_mcp": {
"command": "/Users/feamster/src/digitakt-midi-mcp/venv/bin/python",
"args": ["/Users/feamster/src/digitakt-midi-mcp/server.py"]
}
}
}
Troubleshooting and tips
If the Digitakt does not respond, verify that MIDI clock is enabled and that the transport receive/clock receive settings are active in the device’s MIDI config. For reliable playback when controlled externally, use play_with_clock which starts the sequencer and streams clock while maintaining precise timing.
If you encounter permission or port issues, ensure your OS permissions allow MIDI access to the Python process and that the USB connection remains stable.
SysEx and advanced control
Raw SysEx messages can be sent for advanced pattern programming and device control. The exact SysEx format may require experimentation or data capture from Elektron Transfer software. Use SysEx to perform specialized operations not covered by standard CC/NRPN messages.
Testing and development guidance
Code changes should be tested against a connected Digitakt device. Run the test suite in the tests directory to verify MIDI mappings and transport interactions. Ensure your Digitakt is connected via USB for all tests.
Examples of usage with Claude Desktop
Add this to your Claude Desktop config to run the MCP server from your local environment.
{
"mcpServers": {
"digitakt_mcp": {
"command": "/Users/feamster/src/digitakt-midi-mcp/venv/bin/python",
"args": ["/Users/feamster/src/digitakt-midi-mcp/server.py"]
}
}
}
Tools and capabilities overview
The MCP server exposes a wide set of tools to drive Digitakt performance, including sending notes, triggering tracks, adjusting CCs, handling MIDI transport, exporting patterns to MIDI files, and managing parameter automation. See the dedicated tool list for exact tool names and parameter expectations.
Available tools
send_note
Send a MIDI note to trigger drums on the Digitakt.
trigger_track
Trigger a one-shot sample on a specific Digitakt track (convenience wrapper).
send_cc
Send a Control Change message to adjust Digitakt parameters.
send_program_change
Switch to a different pattern on the Digitakt.
send_note_sequence
Send a sequence of notes with timing.
send_nrpn
Send an NRPN message for advanced parameter control.
set_trig_note
Set the note for a trig (step) conveniently.
set_trig_velocity
Set the velocity for a trig (step).
set_trig_length
Set the length for a trig (step).
send_midi_start
Send MIDI Start to begin the Digitakt sequencer.
send_midi_stop
Send MIDI Stop to halt the sequencer.
send_midi_continue
Send MIDI Continue to resume playback.
send_song_position
Send MIDI Song Position Pointer to jump within the sequence.
play_with_clock
Play with MIDI clock to ensure reliable external control.
play_pattern_with_tracks
Start a pattern and trigger specific tracks at specified times.
play_pattern_with_melody
Start a pattern and play a melodic sequence on the active track.
play_pattern_with_loop
Play a pattern with continuously looping notes.
play_pattern_with_tracks_and_melody
Combine track triggers and melody notes in one transport session.
save_last_melody
Save the last played melody to a standard MIDI file.
save_last_pattern
Save the last played pattern to a standard MIDI file.
export_pattern_to_midi
Export a complete pattern to a multi-track MIDI file.
send_sysex
Send a System Exclusive message for advanced control.
request_sysex_dump
Request a SysEx data dump from the Digitakt.
set_parameter
Instantly set a specific parameter value on a chosen track/channel.
send_parameter_sweep
Smoothly sweep a parameter over time with a chosen curve.
send_parameter_envelope
Apply an ADSR-style envelope to a parameter.
play_pattern_with_parameter_automation
Play a pattern with automated parameter changes.
save_automation_preset
Save parameter automation as a reusable preset.
load_automation_preset
Load and optionally play a saved automation preset.
list_automation_presets
List all available automation presets.
export_automation_to_midi
Export parameter automation to a standard MIDI file.
list_parameters
List all automatable parameters, organized by category.
list_parameters(category)
Filter parameter list by category name